我试图制作有条件的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)
来更新属性。
答案 0 :(得分:16)
您想使用changes
而不是previous_changes
。您仍处于同一个保存事务中,因此您要查找的内容位于changes
。在更新完成之前,previous_changes
将不会获得信息。
RAILS 5.1.1:
使用saved_changes
代替changes
,因为它将在新版本中弃用。