Наблюдатель и обратный вызов не вызваны для acceptpts_nested_attributes_for - PullRequest
4 голосов
/ 23 декабря 2011

У меня есть модели Тема и Пост. Тема has_many: сообщения.

В модели темы у меня также есть accept_nested_attributes_for: posts,

Кажется, что ни наблюдатель, ни обратный вызов не запускаются для модели Post при обновлении темы с некоторыми параметрами для Post. Это ошибка или особенность?

Ответы [ 2 ]

0 голосов
/ 07 марта 2014

Когда вы запускаете метод update_attributes на вложенном ресурсе или нет, ресурс сохраняется только , если он был изменен и если он проходит проверку: если нет, ресурс не сохраняется и after_update не запускается.

0 голосов
/ 27 февраля 2012

Не уверен, что вы подразумеваете под "при обновлении темы с некоторыми параметрами для сообщения" , но Post обратные вызовы будут выполняться только при обновлении объекта записи.

, т.е.это вызовет обратные вызовы:

@post.update_attributes(:topics_attributes => [...])

... но это не будет:

@topic.update_attributes(:post_id => 123, ...)

Если вы хотите вызвать обратный вызов Post after_update при обновлении темыВы можете сделать это:

# topic.rb
after_update :touch_post
private
def touch_post
  post.touch
end

Код наблюдателя будет вести себя подобно обратным вызовам.

...