0

Rails v2.3.8でバグが見つかったと思いますが、ばかげたことをしている場合に備えてここで質問しています。

出荷を説明する 3 つの深さのネストされたモデルがあります (つまり、出荷 -> ボックス -> ボックス内の項目)。出荷と輸送箱は同時に作成されますが、品目は注文が行われた時点からすでに存在するため、品目を箱に関連付けるだけで済みます。

create メソッドで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方法はうまく機能します

必要に応じて詳細を投稿できますが、Rails で生成された SQL はvendor_shipping_box_id引用符で囲む必要があり、それがActiveRecordエラーの原因ですよね? または、何か不足していますか?

(私のモデル/コントローラー/ビューはすべて、Ryan Bates の RailsCasts ep: 196 & 197 に従ってセットアップされていることに注意してください)


更新: Rails 3.0 に更新したところ、create メソッドが期待どおりに機能しました。したがって、これは間違いなくバグです。以前のバージョンのソフトウェアのバグを報告するのは適切ですか? Rails のバグやバグ報告に関するドキュメントはどこにありますか?

4

1 に答える 1

0

これと同じ問題に遭遇しましたが、まだ修正/回避策が見つかりません。残念ながら、現時点では Rails 3 以降のバージョンの Rails 2.3 にアップグレードすることはできません。

于 2011-04-26T15:56:37.093 に答える