Ruby 验证空白字段Rails模型
这可能有点基本,但在任何地方都找不到明确的答案。我已经在我的应用程序中设置了一个联系人表单,并在其中添加了一个隐藏字段,该字段在完成后将使用一些Jquery禁用提交按钮。我试图阻止自动垃圾邮件 我还可以在模型中添加一些验证吗Ruby 验证空白字段Rails模型,ruby,ruby-on-rails-3,validation,model,Ruby,Ruby On Rails 3,Validation,Model,这可能有点基本,但在任何地方都找不到明确的答案。我已经在我的应用程序中设置了一个联系人表单,并在其中添加了一个隐藏字段,该字段在完成后将使用一些Jquery禁用提交按钮。我试图阻止自动垃圾邮件 我还可以在模型中添加一些验证吗 validates :ghost, :presence => false 看看这些文件,这是无效的吗?如果填写此字段,我希望表单失败。我不知道该怎么办 编辑 所以我现在读到了,我可能会使用 validates_exclusion_of :ghost, :on =&
validates :ghost, :presence => false
看看这些文件,这是无效的吗?如果填写此字段,我希望表单失败。我不知道该怎么办
编辑
所以我现在读到了,我可能会使用
validates_exclusion_of :ghost, :on => :create
尽管这仍然失败,因为我认为我没有传递正确的参数。
:presence=>false
表示禁用状态验证程序
您需要编写自己的缺勤验证(尽管在Rails 4.0中存在这种验证,缺勤:true
)
我很抱歉地说,但是为什么您要尝试以如此不同的方式来做事情,这样做会让任何从事这项验证工作的未来开发人员更加困惑。 第一件事: 1) 您可以做相反的操作,当字段为空时将其标记为垃圾邮件,反之亦然,然后只需使用validation validates\u presence\u of:ghost进行检查 2) 或者,如果您想保护垃圾邮件,请使用capcha(recapcha gem) 3) 或者,如果您希望只按自己的方式进行验证,那么只需添加自定义验证 尝试创建自定义验证
validate :check_for_spam
def check_for_spam
errors.add_to_base "ghost is present this is a spam" if ghost.present?
end
如果要检查:ghost是否为空:
validates :ghost, inclusion: {in: ['']}
如果要检查:ghost是否为nil,则必须依赖自定义验证器
validates :ghost, inclusion: {in: ['']}