我目前正在学习RoR,这可能是一个简单的问题,但我不知道该怎么做。 我刚刚创建了一个简单的博客,按照教程,但我想添加一个喜欢的系统,以便用户可以喜欢(比如在Youtube或Facebook上)某个博客帖子。我该怎么做?
这是我一直在想的: 在我的数据库中添加一个名为“Likes”的新数组,在我的视图中添加一个Like按钮。在我的控制器中添加一个方法,只要有人点击它就会添加1。 我不确定这是否是这样做的方式,因为我对Ruby和Rails是全新的。
答案 0 :(得分:5)
使用此 gem 让您快速前进。
假设您有一个Post
模型可以被User
模型所喜欢,那么当user
喜欢post
我们希望在新版本中跟踪它时model
/ table
,我们将其命名为Like
。此Like
模型属于同时属于User
和Post
class Post < ActiveRecord::Base
has_many :likes
# like the post
def like(user)
likes << Like.new(user: user)
end
# unlike the post
def unlike(user)
likes.where(user_id: user.id).first.destroy
end
end
class User < ActiveRecord::Base
has_many :likes
end
class Like < ActiveRecord::Base
belongs_to :post
belongs_to :user
## We make sure that one user can only have one like per post
validates :user_id, uniqueness: {scope: :post_id}
end
#likes table attributes
id
user_id
post_id
用户如何喜欢帖子?
$rails console
> post = Post.first
> user = User.first
> post.like(user)
> post.likes.count #=> 1
> post.unlike(user)
> post.likes.count #=> 0