0

好的,所以我有一个应该返回包(service_package_id 和 payment_plan_id)的方法被传入并且有效。包模型属于服务包和付款计划,每个模型都有许多包。

@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 为零?这适用于rails 3.0.9,但至少在我的开发机器上不适用于3.1 rc4。有什么想法吗?

4

1 回答 1

0

弄清楚了。

这里的主要问题是模型没有(故意)访问数据库,但我已经为 payment_plan_id 和 service_package_id 设置了 attr_accessor 方法。由于我将整个对象传递给 id 属性,因此该属性实际上包含内存中的整个属性。一旦它开始访问数据库,构建应该可以工作

于 2011-07-13T17:58:07.760 回答