我有兩個模型與一對多關聯。我想根據父項的某些狀態在初始化時在子模型上設置默認值。這涉及到需要通過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'。 –