Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 验证空白字段Rails模型_Ruby_Ruby On Rails 3_Validation_Model - Fatal编程技术网

Ruby 验证空白字段Rails模型

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 =&

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

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

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: ['']}