在Rails中验证原始值为nil

时间:2015-02-20 21:27:32

标签: ruby-on-rails ruby-on-rails-4 rails-activerecord

我想为模型添加一个验证,以检查字段(字符串)是否可以设置为只有它的原始值为零的东西。

我该怎么做?

实际上有两个子问题是:

  • 是否有标准的方法
  • 如果需要自定义验证,我如何访问原始值(vs新值)

1 个答案:

答案 0 :(得分:2)

这似乎是一项自定义工作。假设您有一个名为field的字段。

validate :no_modifications_on_field

def no_modifications_on_field
  if field_changed? && !field_was.nil?
    errors.add(:field, 'Once you set a field, you can never change it!')
  end 
end

field_changed?field_was是为每个字段生成的ActiveModel::Dirty个助手。您还可以通过changed_attributes访问所有已更改的属性。