有很多多态资源(使用ActiveRecord)

时间:2011-12-17 16:40:57

标签: ruby-on-rails activerecord orm polymorphism

假设我们使用ActiveRecord,并且有一个用户(User模型)有很多评论(Comment模型)和许多文章(Article模型)。我们可以这样写:

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

我认为这是可能的。感谢。

1 个答案:

答案 0 :(得分:0)

之前已经问过,最好谷歌反向多态关联。也就是说,这是问同样的问题。

Reverse Polymorphic Associations

然后答案链接到这个要点,这说明了一种很好的方法。

https://gist.github.com/1242485