has_one:通过多态 - 是否可能?

时间:2011-09-20 04:41:55

标签: ruby-on-rails polymorphism has-one

我的应用中有模型:

课程评论<的ActiveRecord ::基

belongs_to :commentable, :polymorphic => true

class Project<的ActiveRecord ::基

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

课堂讨论<的ActiveRecord ::基

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

class Ticket<的ActiveRecord ::基

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

一切正常,但有时通过评论(即comment.commentable.project)从评论中获取项目并不是很方便。 有没有办法在Comment模型中制作has_one项目?

1 个答案:

答案 0 :(得分:4)

我会将以下方法添加到您的班级Comment

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

如果没有ActivRecord的所有魔力,这将为您提供相同的结果。