Rails Validator Skip包含

时间:2016-10-28 20:16:04

标签: ruby-on-rails

我有一个包含以下验证器的课程:

fields field:name 'field_name',

requires :field_name,

validates :field_name, inclusion: { in: %w(cat dog fish),
                       message: "%{value} is not a valid field_name"

所以我用field_name null实例化了这个类,我得到了两个验证错误:

  1. field_name不能为null(因此requires按预期失败)
  2. null不是有效的字段名称
  3. 有没有办法可以设置这些验证器,如果field_name为null,它会跳过第二次检查?

1 个答案:

答案 0 :(得分:1)

试试这个:

validates :field_name, inclusion: { in: %w(cat dog fish) },
                       message: "%{value} is not a valid field_name",
                       unless: -> { field_name.nil? }

如果您正在使用ActiveSupport(如果您正在使用Rails,那么也是如此),您也可以使用.blank?而不是.nil?来处理空数组和哈希,以及仅处理字符串空白是空的。