0

这个截屏视频中, Ryan Bates 展示了如何从头开始实施信誉系统。但是有没有办法只给 current_user 1 票,并检查用户是否已经为应用投票,如果是,限制投票的可能性?

我认为user.rb中这样的东西应该可以工作,但我不知道如何准确地写它

   def has_one_vote
      Restrict amount of user votes to 1
   end

谢谢

4

1 回答 1

1

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

您应该在属性上的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
于 2012-09-04T13:45:46.387 回答