通过post_id和ip_address验证创建 - Ruby on Rails
问题描述:
我已经使用Ruby on Rails创建了一个博客应用程序,其中包括对帖子进行投票的能力。用户可以点击投票,并在投票表中创建一条记录。我现在试图限制同一个人多次投票。通过post_id和ip_address验证创建 - Ruby on Rails
class Post
has_many :votes
end
class Vote
belongs_to :post
end
当投票记录我使用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
这将验证独特性问候后。用户将无法为相同的帖子投票两次。
在其他消息 - 你可以从request.remote_ip
获得远程IP地址。这是代理IP地址的包装,因此您不必担心HTTP_X_FORWARDED_FOR
和类似的头文件。
完全相同,我将发布但gr8风格。 1票优秀的答案。 – Salil 2010-04-17 04:58:38
这样做。非常感谢你。完善。 – bgadoci 2010-04-17 05:08:24