Отслеживание изменений модели в after_commit: on =>: создание обратного вызова

Есть ли способ отслеживать изменения модели на after_commit при создании записи? Я попытался использовать грязный модуль и смог отслеживать изменения, когда запись была обновлена, но когда запись создана, изменения не записываются.

Ответы

Ответ 1

Вы не можете использовать метод rails changed?, так как он всегда будет возвращать false. Чтобы отслеживать изменения после совершения транзакции, используйте метод previous_changes. Он вернет хэш с именем атрибута в качестве ключа. Затем вы можете проверить, находится ли ваше имя атрибута в хеше:

after_commit :foo

def foo
 if previous_changes[attribute_name]
   #do your task
 end
end