Userと UserProfileを使用したモデルの簡単なセットアップがUser
あります。UserProfile
has_one :user_profile
belongs_to :user
しかし、Rails がafter_create
コールバックの実行順序をaccepts_nested_attributes_for
定義し、モデルで定義する方法について頭を悩ませることはできません。この2つのケースを考えてみましょう。
ケース 1:
class User < ActiveRecord::Base
has_one :user_profile
accepts_nested_attributes_for :user_profile
after_create :test_test
end
ここで、コンソールを介して (user_profile_attributes ハッシュも使用して) ユーザーを作成するafter_create
と、ユーザーとそのユーザー プロファイルが作成された後にコールバックがトリガーされます。
ケース 2:after_create
を上に配置した
場合、
class User < ActiveRecord::Base
after_create :test_test
has_one :user_profile
accepts_nested_attributes_for :user_profile
end
コールバックは、ユーザーが作成された後、ユーザー プロファイルを作成する前にトリガーされます。
これは、機能することが期待される方法です。ここでRailsは内部的に何をしますか? 実行順序は単純にコードの順番で決まるのでしょうか?
これをさらに深く掘り下げたり、デバッグしたりするには、どこから始めればよいですか?