2010-09-14 51 views
0

我期望在rails v2.3.8中发现一个bug,但我在这里问我是否在做一些愚蠢的事情。Rails嵌套模型属性'acceptersted_attributes_for'创建时可能出现的错误

我有一个3层深的嵌套模型,描述了一个装运(即装运 - >箱子 - >箱子中的行项目)。货件和箱子是同时创建的,但订单已存在,因此订单被放置后,订单项只需与其所在的箱子关联。

创建方法shipment给我这个错误:

ActiveRecord::RecordNotFound (Couldn't find VendorOrderLine with ID=3 for VendorShippingBox with ID=) 

,并显示SQL它试图执行:

SELECT * FROM "vendor_order_lines" WHERE ("vendor_order_lines"."id" IN ('3','4')) AND ("vendor_order_lines".vendor_shipping_box_id = NULL) 

注意vendor_shipping_box_id不加引号。

如果我运行此查询在控制台:

VendorOrderLine.find(:all, :conditions=>["vendor_order_lines.id IN ('3', '4') AND vendor_order_lines.vendor_shipping_box_id IS NULL"]) 

我得到预期的结果。奇怪的是,update方法工作正常

我如果需要的话可以发布更多细节,但轨道生成的SQL应该在报价vendor_shipping_box_id,这是什么引起的ActiveRecord错误,正确吗?或者我错过了什么?

(注意,我的模型/控制器/视图是每Ryan Bates的RailsCasts EP中的所有设置:196 & 197)


更新:我更新到Rails 3.0,以及创建方法按预期工作。所以这绝对是一个错误。报告以前版本软件的错误是否正确?我在哪里可以找到轨道错误/错误报告的文档?

回答

0

我已经运行过这个相同的问题,但没有找到修复/解决办法,但现在我们无法升级到rails 3或更新版本的rails 2.3。