【问题标题】:Validating a blank field Rails Model验证空白字段 Rails 模型
【发布时间】:2013-07-22 08:20:44
【问题描述】:

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

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

validates :ghost, :presence => false

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

编辑

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

 validates_exclusion_of :ghost, :on => :create

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

【问题讨论】:

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


    【解决方案1】:

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

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

    validate :ghost_is_absent
    
    def ghost_is_absent
      errors.add :ghost if ghost.present?
    end
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2020-06-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-10
          • 1970-01-01
          相关资源
          最近更新 更多