1対多の関連付けを持つ2つのモデルがあります。親の状態に基づいて、初期化時に子モデルにデフォルト値を設定したいと考えています。これには、belongs_to アソシエーションを介して親にアクセスする必要がある子で after_initialize コールバックを発生させることが含まれます。問題は、build メソッドを使用して子をインスタンス化すると、after_initialize コールバックで親への関連付けが nil になることです。これは予想される動作ですか?私はレール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 の呼び出しでは、merchant は nil ですが、そうすべきではないようです。