信誉体系从无到有.将current_user投票数限制为1



在本次放映中,Ryan Bates展示了如何从头开始实现信誉系统。但有没有办法只给current_user 1次投票,并检查用户是否已经投票支持该应用程序,如果是,则限制投票的可能性?

我认为user.rb中的类似内容应该有效,但我不知道该如何编写

   def has_one_vote
      Restrict amount of user votes to 1
   end

感谢

我假设您有用户、投票和帖子,并且用户对帖子进行投票。

您应该在user_id属性的Vote类中添加一个唯一性验证器,其作用域为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

相关内容

  • 没有找到相关文章

最新更新