2011-12-17 51 views
0

假設我們使用ActiveRecord,並且有一個用戶(User模型)有很多評論(Comment模型)和許多文章(Article模型)。我們可以這樣寫:有許多多態資源(有ActiveRecord)

class User < ActiveRecord::Base 
    has_many :comments 
    has_many :articles 
end 

class Article < ActiveRecord::Base 
    belongs_to :user 
end 

class Comment < ActiveRecord::Base 
    belongs_to :user 
end 

...所以我可以做user.commentsuser.articles

user.comments # => [#<Comment:0x12bfcd010>, #<Comment:0x3928c1101>] 
user.articles # => [#<Article:0x10aacd333>] 

考慮文章和評論作爲一個項目,是可以這樣做(與1個查詢)?

user.items # => [#<Comment:0x12bfcd010>, #<Article:0x10aacd333>, #<Comment:0x3928c1101>] 

...這樣,一個項目可能看起來像一個多晶型連接資源。即使這不是正常的polymorphic association

我認爲這是可能的。謝謝。

回答

0

這已被問到之前,最好谷歌反向多態關聯。這就是說,這個問題提出了同樣的問題。

Reverse Polymorphic Associations

而答案然後鏈接到這個要點,這說明一個辦法做到這一點非常好。

https://gist.github.com/1242485

+0

非常感謝,@ hakunin! – 2011-12-17 20:29:59