验证 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.

访问所有更改的属性