我有两个模型与一对多关联。我想根据父项的某些状态在初始化时在子模型上设置默认值。这涉及到需要通过belongs_to关联访问父对象的child的after_initialize回调触发器。问题是,当我使用构建方法实例化子对象时,与父对象的关联在after_initialize回调中为零。这是预期的行为?我在轨道3.0.6Rails协会在after_initialize无
,一种玩具,例如:
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,商户零,虽然它似乎不该不会的。
具有原始商户实例被保存呢,你叫商人了。 products.build? – Pasted
是的,商家将是一个现有的记录在分贝,所以它会有一个有效的ID。 – Dino
我几乎完全按照你的想法试过它,它对我很有用。唯一的区别是'class Products'应该是'class Product'而不是's'。 –