这可能有些基本但无法在任何地方找到明确的答案。我已经在我的应用程序中设置了一个联系表单,并放入了一个隐藏字段,当完成时禁用带有一些Jquery的提交按钮。我试图阻止自动垃圾邮件..
我还可以在模型中添加一些验证吗?
validates :ghost, :presence => false
查看文档这是无效的?如果填写此字段,我希望表单失败。不确定如何进行此操作
修改
所以我现在读到我可以使用
validates_exclusion_of :ghost, :on => :create
虽然这仍然失败,因为我不认为我传递了正确的论据。
答案 0 :(得分:5)
:presence => false
表示您禁用在线验证程序。
您需要编写自己的缺席验证(尽管在Rails 4.0中存在此类验证,absence: true
)。
validate :ghost_is_absent
def ghost_is_absent
errors.add :ghost if ghost.present?
end
答案 1 :(得分:1)
我很遗憾地说,但是你为什么要这样做的方式如此不同,这样做会让任何未来的开发人员更加困惑。 第一件事: 1)你可以反过来,当字段为空时将其标记为垃圾邮件,反之亦然,然后只需检查验证validates_presence_of:ghost 2)或者如果你想保护垃圾邮件使用capcha(recapcha gem for that)
3)或者如果你想要它只是你自己的方式,那么只需添加一个自定义验证 尝试创建自定义验证。
validate :check_for_spam
def check_for_spam
errors.add_to_base "ghost is present this is a spam" if ghost.present?
end
答案 2 :(得分:0)
如果你想检查:ghost是否为空白:
validates :ghost, inclusion: {in: ['']}
如果你想检查:ghost是否为nil,你必须依赖自定义验证器。