Har*_*tty 14 ruby-on-rails paperclip
看起来像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
Run Code Online (Sandbox Code Playgroud)
注意
我知道我可以before_save通过avatar.dirty?调用检测回调的变化,但dirty保存后该标志设置为false.
我可以添加处理器,但是我需要在保存模型数据后执行我的操作.
Dyl*_*kow 28
您可以尝试访问_changed?其中一个属性的方法:
if avatar_updated_at_changed?
# do something
end
Run Code Online (Sandbox Code Playgroud)
小智 5
当我在保存后需要访问这些数据时,我通常采用这种方法:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5014 次 |
| 最近记录: |