bga*_*oci 0 ruby ruby-on-rails
我使用Ruby on Rails创建了一个博客应用程序,其中包括对帖子进行投票的能力.用户可以单击投票并在投票表中创建记录.我现在试图限制同一个人多次投票.
class Post
has_many :votes
end
class Vote
belongs_to :post
end
Run Code Online (Sandbox Code Playgroud)
创建投票记录时,我使用VotesController传递:post_id并在视图中使用隐藏字段传递ip_address(两者都传递到投票表).我想知道是否有一种方法可以向投票模型添加验证,以搜索post_id是否有与请求投票的人匹配的ip_address.
我曾尝试使用validates_uniqueness_of:ip_address但限制用户对任何帖子进行投票.我只想限制用户对他们已经投票的特定帖子进行投票.
有没有办法通过验证来做到这一点?
试试这个:
class Vote
belongs_to :post
validates_uniqueness_of :ip_address, :scope => [:post_id]
end
Run Code Online (Sandbox Code Playgroud)
这将验证关于帖子的唯一性.用户将无法为同一帖子投票两次.
在其他新闻中 - 您可以从中获取远程IP地址request.remote_ip.这是代理IP地址的包装器,因此您不必担心HTTP_X_FORWARDED_FOR和类似的标头.
| 归档时间: |
|
| 查看次数: |
106 次 |
| 最近记录: |