Ответ 1
Вы не можете использовать метод rails changed?
, так как он всегда будет возвращать false. Чтобы отслеживать изменения после совершения транзакции, используйте метод previous_changes
. Он вернет хэш с именем атрибута в качестве ключа. Затем вы можете проверить, находится ли ваше имя атрибута в хеше:
after_commit :foo
def foo
if previous_changes[attribute_name]
#do your task
end
end