2011-09-20 71 views
3

我在我的應用程序模型:has_one:通過多態 - 有可能嗎?

類評論<的ActiveRecord :: Base的

belongs_to :commentable, :polymorphic => true 

類項目<的ActiveRecord :: Base的

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

課堂討論<的ActiveRecord :: Base的

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

客位機票<的ActiveRecord :: Base的

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

一切工作正常,但有時它不是十分便利,以通過commentable從評論中獲得項目,即comment.commentable.project。 有什麼方法可以使評論模型中的has_one項目?

回答

4

我將在下面的方法添加到您的Comment類:

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

這會給你同樣的結果而不ActivRecord所有魔法。

+0

嗯...好的決定,謝謝! –

+0

或'commentable.try(:project)'。 – tokland