我如何编码以防止Rails3中的垃圾邮件?

时间:2012-12-11 07:50:10

标签: ruby-on-rails ruby-on-rails-3

我完全理解验证码,并已在我的应用中实现。到目前为止工作正常。
显然,如果它要求你在每次发帖时输入验证码,那就太烦人了:(

现在我正在考虑将当前时间与用户上次提出的时间进行比较的方式。 如果它是Post模型,它有created_at(时间戳)

如何在控制器中书写?我想使用'过滤前'检查它何时创建。 我希望用户至少等待1分钟发布下一篇文章。

它应该是这样的吗?我是Rails的新手。请帮忙!

def spam_check

 @post = Post.find_by_user_id(current_user.id)
 lasttime = @post.created_at.last


end

2 个答案:

答案 0 :(得分:5)

Post模型中:

validate :spam_check?, :on => :create

def spam_check?
   @post = Post.find_all_by_user_id(current_user.id).last
   last_time = @post.created_at

   Time.now - last_time > 1.minute
end

答案 1 :(得分:1)

您可以使用JS填充一些在发送之前自动填充表单中的一些隐藏字段。如果有人禁用了JS,那么只需查看验证码即可。

编辑:除了@sub_stantial's post之外,这是一个好主意。