Rails - последовательность выполнения после создания обратного вызова и вложенных атрибутов

У меня есть простая настройка модели User и UserProfile с User has_one :user_profile и UserProfile принадлежит :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 внутри? Определяется ли последовательность выполнения просто порядком выполнения кода?

Где я могу начать копать глубже или отлаживать это?

12
задан Simone Carletti 27 January 2015 в 07:59
поделиться