看起来像Paperclip不尊重ActiveRecord脏模型。如何检测after_save
回调中的更改。
class User
has_attachment :avatar
after_save :do_something
def do_something
if name_changed?
#
end
# How to determine avatar was changed?
#if avatar_changed?
# #
#end
end
end
注意
我知道我可以使用before_save
调用检测avatar.dirty?
回调中的更改,但保存后dirty
标志设置为false。
我可以添加处理器,但是我需要在保存模型数据后执行我的操作。
答案 0 :(得分:28)
您可以尝试访问其中一个属性的_changed?
方法:
if avatar_updated_at_changed?
# do something
end
答案 1 :(得分:3)
当我需要在保存后访问此数据时,我通常采用这种方法:
class Foo
has_attachment :avatar
before_save :check_for_avatar_changes
after_save :do_something
def do_something
if @avatar_has_changes
#
end
end
def check_for_avatar_changes
@avatar_has_changes = self.avatar.dirty?
end
end