2

这可能有点基本,但无法在任何地方找到明确的答案。我已经在我的应用程序中设置了一个联系表单,并放入了一个隐藏字段,完成后会禁用带有一些 Jquery 的提交按钮。我试图阻止自动垃圾邮件..

我还可以在我的模型中添加一些验证吗?

validates :ghost, :presence => false

查看文档这是无效的吗?如果填写此字段,我希望表单失败。不知道如何处理这个

编辑

所以我现在已经读到我可能会使用

 validates_exclusion_of :ghost, :on => :create

虽然这仍然失败,因为我认为我没有传递正确的论点。

4

3 回答 3

5

:presence => false表示您禁用存在验证器。

您需要编写自己的缺席验证(尽管在 Rails 4.0 中存在此类验证absence: true)。

validate :ghost_is_absent

def ghost_is_absent
  errors.add :ghost if ghost.present?
end
于 2013-07-22T08:51:53.083 回答
1

我很遗憾地说,但你为什么要尝试以如此不同的方式做事情,这样做会让任何未来从事此验证工作的开发人员更加困惑。第一件事:1)你可以做相反的事情,当字段为空时将其标记为垃圾邮件,反之亦然,然后简单地检查验证 validates_presence_of :ghost 2)或者如果你想保护垃圾邮件使用验证码(recapcha gem for那)

3)或者如果您只想按照自己的方式进行操作,则只需添加自定义验证尝试创建自定义验证。

validate :check_for_spam

def check_for_spam
    errors.add_to_base "ghost is present this is a spam" if ghost.present?
end
于 2013-07-22T08:52:09.943 回答
0

如果要检查 :ghost 是否为空:

  validates :ghost, inclusion: {in: ['']}

如果要检查 :ghost 是否为 nil,则必须依赖自定义验证器。

于 2014-01-13T15:55:48.127 回答