ruby на рельсах after_update проблема с обратными вызовами - PullRequest
1 голос
/ 13 марта 2012

В моем приложении на Rails есть обратный вызов after_update. Но этот обратный вызов выполняется, когда моя запись впервые создается с использованием метода save и когда она обновляется с помощью update_attributes.

Итак, я хочу способ, с помощью которого callback / метод должен вызываться, когда он собирается обновить метод, но в настоящее время он выполняется, когда он собирается создать, а также метод обновления.

Я думаю, update_attribute также вызывает внутренний метод сохранения, потому что эта проблема надвигается.

Так есть ли способ, с помощью которого я могу вызвать свой хук, когда запись обновлена ​​и не сохранена.

Я нашел один способ, используя attr_accessors, но я хотел другой путь, так как поддержание этих флагов будет очень трудным для моего приложения

Ответы [ 2 ]

1 голос
/ 13 марта 2012

Как насчет этого

after_update do |model| 
  model.name = model.name.capitalize unless model.new_record?
end
0 голосов
/ 13 марта 2012

after_update вызывается только после обновления модели.Чтобы его вызывали при создании модели, необходимо обновить ее атрибуты после вызова .save для модели..update_attribute и .update_attributes - это не создание модели, а обновление модели..update_attribute вызывает метод .save внутри..save вызывается для сохранения состояния модели, новой или обновленной.Когда вы вызываете его, ActiveRecord записывает новое состояние в базу данных.Когда модель создается или обновляется, она всегда выполняется через .save method

...