У меня есть простая настройка модели User
и UserProfile
с User has_one :user_profile
и UserProfile belongs_to :user
.
Но я не могу оборачивать голову тем, как Rails определяет порядок выполнения after_create
обратного вызова и accepts_nested_attributes_for
, определенных в моей модели. Давайте рассмотрим эти два случая.
Случай 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 внутри? Является ли последовательность выполнения просто определяемой порядком кода?
Где я начинаю копать глубже или отлаживать это?