【问题标题】:Common conditional validation rule for multiple attributes (rails)多个属性的通用条件验证规则(rails)
【发布时间】:2018-04-18 09:34:44
【问题描述】:

我有一个带有 attr1, attr2, attr3, attr4... 属性的 ActiveRecord 模型
例如 attr3 和 4 具有相同的填充状态,这意味着它们必须存在或不存在。我已经通过几个条件验证做到了这一点。

validates :attr4, presence: true, if: :condition?
validates :attr4, absence: true, unless: :condition?

def condition?
  attr3 != ""
end

但我想知道是否有更优雅的方式来实现该规则。

【问题讨论】:

    标签: ruby-on-rails validation activerecord


    【解决方案1】:

    您可以使用自定义验证器:

    class SwapValidator < ActiveModel::EachValidator
      def validate_each(record, attribute, value)
        unless value.present? || record.attr3.present?
          record.errors.add(attribute, :invalid)
        end
      end
    end
    

    然后在你的模型中使用:

    validates :attr4, swap: true
    

    【讨论】:

      猜你喜欢
      • 2014-10-18
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      • 2015-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多