在Rails 4.1中,当我的模型中的属性发生更改时,我曾调用一种验证方法
validate :my_attribute_is_valid, if: :my_attribute_changed?
对于Rails 5.1及以上版本(我使用的是6(,attribute_changed?已更改before_和after_回调(分别为saved_change_to_attribute?和will_save_change_to_attribute?(。更改"验证"方法检查的正确方法是什么?
正确的是:will_save_change_to_attribute?
验证在save
回调之前运行,因此,您还不能检查saved_changes
。可用的回调。
正如will_save_change_attribute的文档中所述:
下次保存时此属性会更改吗?此方法在验证和回调之前非常有用,以确定下一个要保存的调用是否会更改特定属性。它可以被调用为will_save_change_to_name?而不是will_save_change_attribute?("名称"(。