我喜欢Rails,但我们刚开始约会。
用户可以对链接和评论进行投票。除了主键和时间戳之外,我目前还为这些模型定义了以下属性:
我刚刚添加了评论模型并思考如何将其与投票相结合。一些选择:
不确定什么是最好的。 #1和#3引入了两用表,即表中的某些列仅与该表中的行的子集相关。 #2避免了这个问题,但似乎多余而愚蠢。
权衡是不可避免的还是我没有看到黄金道路?你会推荐什么?如果您碰巧知道github上的rails存储库处理类似的情况,我真的很感激链接!
答案 0 :(得分:3)
我认为您正在寻找的是多态关联。在你的情况下,就像这样简单:
class Vote < ActiveRecord::Base
belongs_to :votable, :polymorphic => true
end
class Link < ActiveRecord::Base
has_many :votes, :as => :votable
end
class Comment < ActiveRecord::Base
has_many :votes, :as => :votable
#...
end
您的投票表应如下所示:
id : integer
votable_id : integer
votable_type : string # Comment || Link
在这里你有一个关于它的Railscast:Polymorphic Associations Railscast