我在after_save
上有一个方法(并且必须在after_save之后完成,因为我使用了对象的id),但我在表单中添加了一个checkbox属性,当我更改它时#s; s值,自然它通过回调来保存。但是在只有那个复选框改变的情况下,我不想调用那个方法...想要通过所有的验证/回调。我可以检查object.changes?
是否只有该复选框属性,但是一旦方法是after_save,我就不再拥有该信息了。我可以在before_save之前执行check_method,并且可以在保存时跳过回调(如何)?或者还有另一个建议?谢谢!
答案 0 :(得分:0)
您可以知道某个属性是否已更改或将更改为_changed
添加到该属性的名称。
选项1
after_save :some_method
def some_method
if email_changed?
// do some stuff
end
end
选项2
after_save :some_method, if: :email_changed?
def some_method
// do some stuff
end
答案 1 :(得分:0)
在after_save
和after_commit
回调中,如果列出的唯一属性是复选框属性,则可以使用previous_changes
检查已更改的属性和短路。