在after_update回调中获取更改的属性

时间:2014-04-06 16:40:51

标签: ruby-on-rails ruby activerecord

我试图制作有条件的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)来更新属性。

1 个答案:

答案 0 :(得分:16)

您想使用changes而不是previous_changes。您仍处于同一个保存事务中,因此您要查找的内容位于changes。在更新完成之前,previous_changes将不会获得信息。

RAILS 5.1.1:
使用saved_changes代替changes,因为它将在新版本中弃用。