我想介绍我的案例,并知道我是否应该使用STI解决方案
我正在创建一个留言板网站,到目前为止我有几个模型:用户,主题,帖子..
说清楚:帖子就像是对主题的评论。主题有标题和内容。帖子只有内容。
现在,用户可以选择喜欢/不喜欢帖子或主题。 我想到了三个选择:
这三个选项中哪一个最适合我的需要?
我没有考虑过第四种选择吗?
如果我希望将来有第三个可以喜欢的模型怎么办?
答案 0 :(得分:1)
我假设您想要跟踪用户是否喜欢某个帖子或主题,因此我会为将用户连接到帖子或主题的相似内容制作连接模型。
class Like < ActiveRecord::Base
belongs_to :user
belongs_to :liked_obj, polymorphic:true, counter_cache:true
end
由于likes_obj是多态的,因此它可以是帖子或主题。然后,您可以将has_many :likes
放在这些模型和列likes_count
上,该列将作为计数器缓存自动更新。
如果您有任何代码可以处理Post和Topic之间的常见问题,请将其放在module Likeable
中并将其包含在这两个类中。