在这个截屏视频中, Ryan Bates 展示了如何从头开始实施信誉系统。但是有没有办法只给 current_user 1 票,并检查用户是否已经为应用投票,如果是,限制投票的可能性?
我认为user.rb中这样的东西应该可以工作,但我不知道如何准确地写它
def has_one_vote
Restrict amount of user votes to 1
end
谢谢
在这个截屏视频中, Ryan Bates 展示了如何从头开始实施信誉系统。但是有没有办法只给 current_user 1 票,并检查用户是否已经为应用投票,如果是,限制投票的可能性?
我认为user.rb中这样的东西应该可以工作,但我不知道如何准确地写它
def has_one_vote
Restrict amount of user votes to 1
end
谢谢
我假设您有用户、投票和帖子,并且用户对帖子进行投票。
您应该在属性上的Vote
类中添加一个唯一性验证器user_id
,范围为post_id
. 这将用户对给定帖子的投票数限制为一:
class Vote
belongs_to :user
belongs_to :post
validates :user_id, uniquness: { scope: :post_id }
end
要限制用户可以创建的投票总数,请从唯一scope
性验证器中删除 ,或者(更正确地)将外键移动到users
表中。
也就是说,要么这样:
class Vote
belongs_to :user
belongs_to :post
validates :user_id, uniquness: true
end
或者这个:
class User
belongs_to :vote
end