0

これで、パッケージ(service_package_idとpayment_plan_id)を返すべきメソッドが渡され、有効になりました。パッケージモデルはサービスパッケージと支払い計画の両方に属し、それらのモデルのそれぞれには多くのパッケージがあります。Rails 3.1ビルドアソシエーションが動作しない

@service_package = ServicePackage.find(service_package_id) 
@payment_plan = PaymentPlan.find(payment_plan_id) 

@package = @service_package.packages.build(:payment_plan_id => @payment_plan, :promo_code => "149", :price => "7.99", :number_of_free_days => "30", :setup_fee => "0", :initial_price => "0.00", :initial_price_duration => "30", :final_price => "0") 
logger.error "package #{@package.service_package_id}" 
@spackage = @package.service_package 
logger.error "spackage #{@spackage.description}" 

@spackage行まではすべて素晴らしいです。ロガーはservice_package_idを取得しますが、次のログが発生するとnilクラスのnomethoderrorを返します。私の@spackageは何故ですか?これはレール3.0.9では動作しますが、少なくとも私の開発マシンでは3.1 rc4では動作しません。何かご意見は?

+0

あなたのモデルからのあなたのアソシエーションコールを貼り付けることはできますか? –

答えて

0

ここでの主な目的は、モデルがデータベースにヒットしていないことです(目的に応じて)が、payment_plan_idとservice_package_idのattr_accessorメソッドを設定していました。私はid属性にオブジェクト全体を渡していたので、その属性は実際にメモリ内の属性全体を含んでいました。一度それがデータベースを打つことを開始したら、構築はうまくいくはずです

関連する問題