我想创建一个自定义验证函数,仅当当前字段在数据库中不为空时,才允许将字段保存为空/nil。如何在验证函数中访问数据库值(旧值)?我可以使用 self.name_of_field 访问新值。
这就是我现在所拥有的
validate :image_remote_url_change
def image_remote_url_change
if self.image_remote_url.blank? and self.image_remote_url_changed?
errors.add(:field, "can't be blank once set")
return false
end
end
现在,如果我尝试编辑现有对象,它不会接受新的空值,但是在创建新对象时,即使从未设置旧值,它也会说“一旦设置就不能为空”。