class A < ApplicationRecord belongs_to :b end class B < ApplicationRecord belongs_to :a end a = A.new b = B.new a.b = b b.a = a a.save
みたいなときどのように動くのかを調べた。
↓このへんを参考にした
rails/autosave_association.rb at master · rails/rails
- belongs_to関連を設定した場合、before_saveでsave_belongs_to_associationが実行される
- a.saveしたときに、save_belongs_to_association経由で関連先bのsaveを実行する
- bのbefore_saveでもsave_belongs_to_associationが実行され、先にaが保存される(このときaのsave_belongs_to_associationの二回目が実行されないような仕組みが入っている rails/autosave_association.rb at master · rails/rails )。
- bにaの外部キーが設定されてbが保存される
- aにbの外部キーが設定され、aが再度保存(update)される
という流れになるはず。