1

(ルビーオンレール)

フォームからテーブルおよび別のテーブルにデータを保存する登録フォームがあります。フック " after_save :process_field_to_another_table" と " after_create :send_registration_email" を使用して、登録後にユーザーにメールを送信します。

残念ながら、" after_create" は " " の前に動作しますが、保存プロセスが行われた後に動作after_saveする必要があります。「 」で:send_registration_email走ろうと思っていたのですが、2回連続で走るよりは意味がありません。:process_field_to_another_tableafter_create

after_saveこの場合、 " " の前に " " を実行するように指示する方法はありafter_createますか? またはより良い推奨事項はありますか?before_save「 」と「 」を試しbefore_createましたが、正しく処理されないようです。

何かアドバイス?

4

2 に答える 2

3

2 つのフックを 1 つにまとめることができます。

after_save :foo

def foo
  process_field_to_another_table
  send_registration_email if id_changed?  # id will change only for new record.
end
于 2013-04-12T03:53:29.470 に答える
2

after_createとコールバックの組み合わせを使用して、呼び出しを分離できafter_updateます。

after_create :process_field_to_another_table, :send_registration_email
after_update :process_field_to_another_table

このように、process_field_to_another_tablebefore が呼び出されsend_registration_emailます。

于 2013-04-12T03:49:56.107 に答える