验证 Rails 中的原始值为 nil
Validate that original value was nil in Rails
我想向模型添加验证以检查字段(字符串)是否可以设置为仅原始值为 nil 的内容。
我该怎么做?
实际上有两个子问题是:
- 有没有标准的方法
- 如果需要自定义验证,我如何访问原始值(与新值)
这似乎是一项定制工作。假设您有一个名为 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
.
访问所有更改的属性
我想向模型添加验证以检查字段(字符串)是否可以设置为仅原始值为 nil 的内容。
我该怎么做?
实际上有两个子问题是:
- 有没有标准的方法
- 如果需要自定义验证,我如何访问原始值(与新值)
这似乎是一项定制工作。假设您有一个名为 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
.