has_one: через полиморфизм - это возможно? - PullRequest
3 голосов
/ 20 сентября 2011

В моем приложении есть модели:

Комментарий класса

belongs_to :commentable, :polymorphic => true

end

Проект класса

has_many :discussions, :dependent => :destroy
has_many :tickets, :dependent => :destroy

end

Обсуждение класса

has_many :comments, :as => :commentable, :dependent => :destroy

end

Класс Ticket

has_many :comments, :as => :commentable, :dependent => :destroy

end

Все работает нормально, но иногда не очень удобно получать проект из комментария через commentable, т.е. comment.commentable.project.Есть ли способ сделать проект has_one в модели Comment?

1 Ответ

4 голосов
/ 20 сентября 2011

Я бы добавил следующий метод к вашему классу Comment:

def project
  self.commentable ? self.commentable.project : nil
end

Это даст вам тот же результат без всякой магии ActivRecord.

...