繁体   English   中英

Rails:我应该使用STI吗?

[英]Rails: should I use STI?

我想介绍我的案子,并知道是否应该使用STI解决方案。
我正在创建一个留言板网站,到目前为止,我有几个模型:用户,主题,帖子..
明确说明:发布就像是对主题的评论。 主题具有标题和内容。 帖子只有内容。

现在,用户可以选择喜欢/不喜欢帖子或主题。 我考虑了三种选择:

  1. 主题和帖子没有连接(每个模型都有“ num_of_likes”,“ num_of_dislikes”)
  2. 主题继承帖子。
  3. 主题和帖子继承自基本模型,例如,可以称为LikeableObj。

这三个选项中哪一个最适合我的需求?
我有没有想到的第四个选择?
如果将来我想拥有第三个可以被赞扬的模型怎么办?

我假设您想跟踪用户是否喜欢某个帖子或主题,因此我将为喜欢的联接模型创建一个将用户连接到帖子或主题的模型。

class Like < ActiveRecord::Base
  belongs_to :user
  belongs_to :liked_obj, polymorphic:true, counter_cache:true
end

由于Liked_obj是多态的,因此它可以是帖子或主题。 然后,您可以将has_many :likes放在这些模型上,然后将likes_count列作为计数器缓存自动更新。

如果您有处理Post和Topic之间常见的喜欢代码的代码,请将其放在module Likeable ,并将其包含在两个类中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM