我正在尝试进行有条件的 after_update,我有以下内容:
after_update do |participant|
Rails.logger.info "#{self.previous_changes} changed."
if self.previous_changes.include?(:current_distance)
#Do my stuff ...
end
end
记录器打印空哈希:{}
如何检查哪个属性已更改?
我正在使用:participant.update_attribute(:current_distance, distance)
来更新属性。
最佳答案
您想使用 changes
而不是 previous_changes
。您仍在同一个保存事务中,因此您正在寻找的是 changes
。 previous_changes
在更新完成后才会有信息。
RAILS 5.1.1:
使用 saved_changes
而不是 changes
因为它将在新版本中被弃用。
关于ruby-on-rails - 在 after_update 回调中获取更改的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22896912/