2017-10-25 7 views
0

間違ったイベントでトリガ更新中に。私は、の後にすべてを保存すると呼び出されることを発見しました。作成中に呼び出されるようにするにはどうすればよいですか? (何らかの理由で意図しない新しいモデルを作成していた可能性が考えられたので、after_createにテストメソッドを登録しようとしましたが、期待通りに呼び出されません)Railsのモデルのコールバックは、私は、次のコールバック登録でモデルを持っている

更新いくつかの質問に答えるために: まず、ここでset_initial_countsのテキストです:

def set_initial_counts 
    [tags, sources, characters].each do |coll| 
    coll.each do |obj| 
     obj.increment!(:stories_count) 
    end 
    end 
end 

この目的は、カウンタのキャッシュを管理することです。物語オブジェクトには、多くのタグ、ソース、文字が含まれています。これらのそれぞれには、関連付けられているストーリーの数を格納するstories_count列があります。

2番目:誰かがなぜafter_saveの代わりにafter_createを使用していないのかを知りたがっていました。実際には、おそらくafter_createを使用することができましたが、なぜ動作していないのかを知りたいのですが、実際には機能していないということは、コールバックの理解に間違いがあり、未来。

3番目:更新中にafter_saveがトリガーされていることがわかりました。しかし、Section 2.1の3番目のコードブロックは、私がon::createを使用して、set_initial_countsが作成中にのみ呼び出されることを保証することを示しています。

+0

あなたの 'set_initial_counts'メソッドにコードを投稿してください –

+1

' after_create'を使わないのはなぜですか? – hoffm

+0

ガイドでは、作成と更新の両方の後に 'after_save'がトリガーされることが明確に示されています。前述のリンクのセクション「3.3」の後に、赤い背景のテキストを読んでください。 – Sajan

答えて

0

thisを参照してください。

答えは基本的にonはafter_saveのオプションではありません。on createオプションを使用する場合は、after_createを使用するだけです。

関連する問題