我有两个具有一对多关联的模型。我想在初始化时根据父级的某些状态在子模型上设置一个默认值。这涉及在需要通过 belongs_to 关联访问父级的子级上触发 after_initialize 回调。问题是当我使用 build 方法实例化子时,在 after_initialize 回调中与父级的关联为零。这是预期的行为吗?我在轨道上 3.0.6
一个玩具例子:
class Merchant < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :merchant
after_initialize :set_default_value
def set_default_value
if merchant.state
self.foo = some_value
else
self.foo = some_other_value
end
end
end
在控制器中:
product = merchant.products.build
在对 set_default_value 的调用中,商家是 nil,尽管它似乎不应该是。