【问题标题】:Validate Rails attribute presence but allow empty string验证 Rails 属性存在但允许空字符串
【发布时间】:2018-05-02 23:15:36
【问题描述】:

我想验证一个字符串属性不是 nil,而是允许空字符串。

如:

validates name: not_nil, allow_empty: true

【问题讨论】:

    标签: ruby-on-rails ruby validation activerecord


    【解决方案1】:

    你也可以这样做:

    validates :name, exclusion: { in: [nil] }
    

    【讨论】:

      【解决方案2】:

      要允许空字符串,但在活动记录验证回调中拒绝 nil,请使用条件 proc 有条件地要求属性存在(如果它不是 nil)。

      所以代码看起来像:

      validates :name, presence: true, if: proc { name.nil? }
      

      但您可能希望允许 null。然后不验证。还在检查存在吗?在 nil 或空字符串的代码中。

      【讨论】:

      • 您可能应该只编写一个自定义验证方法,在一个包含空字符串的字段上使用validates presence: true 非常令人困惑。这与验证器的意图相反。
      【解决方案3】:

      或者

      validates :name, presence: true, allow_blank: true
      

      【讨论】:

      • allow_blank 也将允许 nil 值,即使是 presence: true
      猜你喜欢
      • 2019-07-16
      • 2012-12-05
      • 2011-05-25
      • 2015-10-04
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 2022-11-12
      • 2021-05-19
      相关资源
      最近更新 更多