我有一个包含以下验证器的课程:
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
实例化了这个类,我得到了两个验证错误:
null
(因此requires
按预期失败)null
不是有效的字段名称有没有办法可以设置这些验证器,如果field_name为null,它会跳过第二次检查?
答案 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?
来处理空数组和哈希,以及仅处理字符串空白是空的。