验证空白字段Rails模型

时间:2013-07-22 08:20:45

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

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

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

validates :ghost, :presence => false

查看文档这是无效的?如果填写此字段,我希望表单失败。不确定如何进行此操作

修改

所以我现在读到我可以使用

 validates_exclusion_of :ghost, :on => :create

虽然这仍然失败,因为我不认为我传递了正确的论据。

3 个答案:

答案 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,你必须依赖自定义验证器。