4

私はトピックと投稿のモデルを持っています。トピックhas_many:posts。私はaccepts_nested_attributes_forも持っているトピックモデルではaccepts_nested_attributes_forのオブザーバとコールバックが発生していません

:ポスト、

はポストのためのいくつかのparamsでトピックを更新するときにどちらのオブザーバーもコールバックがPostモデルのためにトリガされないようです。バグか機能ですか?

+0

あなたは 'config/application.rb'であなたのオブザーバーを有効にしましたか?サーバーを再起動する必要があります。 – NARKOZ

+0

確かに、私は以前のオブザーバーを使っていました。通常のモデル更新のためにネストされたアトリビュートではありません。 – Artur79

+0

あなたはオブザーバーコードも投稿してください。 –

答えて

0

「ポスト用のいくつかのパラメータでトピックを更新するとき」ですが、Postポストオブジェクトを更新するときにのみコールバックが実行されます。

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

を...しかし、これはしません:このすなわち

は、コールバックをトリガする

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

あなたはトピックが更新されたときにPostafter_updateコールバックをトリガしたい場合は、行うことができますこれは:

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

オブザーバーコードはca llbacks。

0

ネストされたリソースに対してupdate_attributesメソッドを実行すると、リソースはに変更された場合はのみが保存され、検証済みの場合はリソースが保存されず、after_updateはトリガーされません。

関連する問題