我正在通过 Heroku 在 Postgres 上运行 Rails 应用程序。
我想在我的网站上为各种项目(例如用户评论)实现类似于 Facebook 的“喜欢”。将这些存储在我的数据库中的最聪明的方法是什么?
显而易见的就是在用户和项目之间有一个类似的连接表,如下所示:
user_id int
item_id int
item_type string
created_at datettime
但是,在显示时,这意味着每次我拉一个项目时,我都必须在整个类似表中拉一个连接,这可能会变得非常大。
对此的明显反应是在项目中存储一个计数器,用于他们正在进行的类似计数。但是,这不起作用,因为谁喜欢一个项目很重要,既可以显示在该项目旁边,也可以隐藏用户已经喜欢的事物的“喜欢”按钮。
我的计划是为所有喜欢的项目添加一个文本字段,我将在其中存储一个序列化数组。这样,每一个项目的拉动都会附带完整的谁喜欢它的列表。有没有更好的方法来做到这一点,或者这是推荐的方法?