Ответ 1
Вы можете попробовать получить доступ к методу _changed?
для одного из следующих атрибутов:
if avatar_updated_at_changed?
# do something
end
Похоже, что 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 после сохранения.
Я могу добавить процессор, но мне нужно выполнить мои действия после сохранения данных модели.
Вы можете попробовать получить доступ к методу _changed?
для одного из следующих атрибутов:
if avatar_updated_at_changed?
# do something
end
Когда мне нужен доступ к этим данным после сохранения, я обычно беру такой подход:
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