我是rails的新手,但在django中开发了很多应用程序。 Django提供了一个contenttypes框架,该框架为每个模型创建一个具有唯一ID的表,允许使用object id
和content-type id
引用来自多个表的对象。 (more info on the contenttypes framework)
这非常有用,因为现在我可以只使用一个表格来投票,而不是拥有与可以投票的事物数量相同的表格(例如question_votes
,answer_votes
,{{ 1}},comment_votes
)。此外,如果出现像post_votes
这样需要投票的新类型,则无需创建新表blogs
。所以这让生活变得轻松。
我的问题是,是否有一个框架/ gem为rails做同样的事情?
谢谢,
答案 0 :(得分:1)
Polymorphic association解决了这个问题
答案 1 :(得分:1)
作为一名已经注意到的评论者,您可能需要多态关联。考虑这个例子:
class Vote < ActiveRecord::Base
belongs_to :voteable, polymorphic: true
end
class User < ActiveRecord::Base
has_many :votes, as: :voteable
end
class Product < ActiveRecord::Base
has_many :votes, as: :voteable
end
更多信息: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations