1

我即将为我正在处理的个人项目添加 +1/likes 功能。我想知道为此的数据库设计可能是什么样子。我不想有几个类似的表格,而是一个类似的表格来处理整个网站的所有喜欢。我希望能够在网站的不同部分创建或随意“插入”它们。

例如

微博 - 用户应该能够“喜欢”微博

照片 - 用户应该能够“喜欢”照片

假设我创建了一个游戏部分并希望用户能够喜欢游戏我希望能够使用现有的点赞表,而不是为游戏创建点赞表。

在我的脑海里,我在想acts_as_tree 插件会非常有用,但是在一个like 表中保存东西会在一段时间后变得凌乱吗?

如何以最明智的可扩展方式将点赞功能添加到我的应用程序中?

4

2 回答 2

1

看看多态关联
提供的链接中的示例讨论了评论,但我认为你想要同样的东西,喜欢。

class Like < ActiveRecord::Base
  belongs_to :likable, polymorphic: true
end

class Micropost < ActiveRecord::Base
  has_many :likes, as: :likable
end

class Post < ActiveRecord::Base
  has_many :likes, as: :likable
end

在这里,你的 Post 和 Micropost 类都可以有赞。您可以将一些添加到您想要的任何课程中。

您甚至可以Like.all使用like.likable.

于 2012-06-06T14:12:52.673 回答
1

你应该有一个“喜欢”模型或其他东西,至少有这个关联:belongs_to :user belongs_to :liked_object, :polymorphic => true

现在你可以做

Like.create :liked_object => micropost, :user => current_user

并且在未来

Like.create :liked_object => game, :user => current_user

搜索多态关联(迁移时可能需要 like_object_type 和 like_object_id)

于 2012-06-06T14:17:23.560 回答