我对User和 UserProfile进行了简单的设置User
和建模。UserProfile
has_one :user_profile
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 在这里内部做什么?执行顺序是否简单地由代码的顺序决定?
我从哪里开始深入挖掘或调试呢?