いくつかのモデルがすべてメモリ内でリンクされており (親:子:子:子)、最上位の親を保存することで同時に保存されています。これはうまくいきます。
子の 1 人の after_create コールバックを利用して、変更ログ テーブルに入力したいと思います。changelog テーブルにコピー/プッシュする必要がある属性の 1 つは、直接の親に対する子のforeign_key ですが、after_create が起動した時点では存在しません!?!
after_create コールバックがなければ、ログを調べて、子が親の前に保存されていること (外部キーが空白) を確認できます。その後、親が挿入されます...その後、子は親からの IDで更新されます。子の after_create は適切なタイミングで起動していますが、Rails が子をforeign_keyで更新する前に発生しています。
このようなモデルのリンクを特定の順序で強制的に保存する方法はありますか? つまり、親、子 (親のforeign_keyが存在する)、その子の子(再びforeign_keyにアクセス可能)などです。そうでない場合、レコードが作成された後にルーチンを起動し、foreign_key を取得するにはどうすればよいでしょうか?
次のようなコールバックが役立つようです: after_create_with_foreign_keys