[前][次][番号順一覧][スレッド一覧]

rails:3607

From: Tomohiro Hashidate <kakyoin.hierophant@g...>
Date: Mon, 15 Aug 2011 23:35:21 +0900
Subject: [rails:3607] Re: Re: Rails3初心者- テーブルをまたいでfind

曽原さん

横から失礼します。
橋立と申します。

前島さんが書かれたコードを実行した時に出力されたエラーは、
発行SQLの最後の ORDER BY created_at DESCという箇所で、
created_atがproductsテーブルか、makersテーブルのどちらのものか判断できないため、
発生しているエラーだと思います。
検索条件として正しいのは、makers.maker_nameであるはずです。

何故SQL文に、ORDER BY created_at DESCが付いているのかは、
ちょっと判断できませんが、Productクラスの定義等で、
デフォルトのORDER句等を指定していませんか?
ORDER句が定義されている箇所を、products.created_atと修正すれば、
エラーは解消されると思います。


-- 
Tomohiro Hashidate
Sent with Sparrow (http://www.sparrowmailapp.com)
Sparrow (http://www.sparrowmailapp.com/?sig) を使って送信 

日付:2011年8月15日月曜日、時刻:23:09、差出人:sohara:

> 前島様
> 曽原です。
> :include =>:makerだけでしたらエラーはでておりません。
> @products =Product.find(:all,:include =>:maker, :conditions =>['code like :value or name like :value', {:value=> '%' +params[:search_form]+ '%'}])
> 
> DB定義はschema,rbのデータでよろしいのでしょうか?
> どうぞよろしくお願い致します。
> 
> ===============================
> 
> schema,rb
> create_table "products", :force => true do |t|
> t.string  "name"
>  t.integer  "price"
>  t.datetime "created_at"
>  t.datetime "updated_at"
>  t.string  "code"
>  t.integer  "cost"
>  t.integer  "quantity"
>  t.integer  "maker_id"
>  t.integer  "cloth_id"
>  t.integer  "category_id"
>  end
> 
> 
> create_table "makers", :force => true do |t| 
>  t.string  "maker_name"
>  t.datetime "created_at"
>  t.datetime "updated_at"
>  end
> 
> 
> ===============================
> 試した時のログです。
> 
> 
> @products =Product.find(:all,:include =>:maker, :conditions =>['code like :value or name like :value', {:value=> '%' +params[:search_form]+ '%'}])
> Started GET "/products/search?utf8=%E2%9C%93&search_form=%E3%82%A2%E3%82%AB%E3%82%BB&commit=%E5%95%86%E5%93%81%E6%A4%9C%E7%B4%A2" for 127.0.0.1 at 2011-08-15 22:58:36 +0900
>  Processing by ProductsController#search as HTML
>  Parameters: {"utf8"=>"", "search_form"=>"アカセ", "commit"=>"商品検索"}
>  Product Load (0.3ms) SELECT "products".* FROM "products" WHERE (code like '%アカセ%' or name like '%アカセ%') ORDER BY created_at DESC
> Rendered shared/_header.rhtml (0.9ms)
>  Maker Load (0.3ms) SELECT "makers".* FROM "makers"
>  Category Load (1.7ms) SELECT "categories".* FROM "categories"
> Rendered shared/_left.rhtml (96.8ms)
> Rendered shared/_footer.rhtml (0.4ms)
> Rendered products/index.html.erb within layouts/application (105.6ms)
> Completed 200 OK in 113ms (Views: 109.7ms | ActiveRecord: 3.3ms)
> 
> ******************************************************************
> 
> makersのコードで試した時のログです。
> 
> @products =Product.find(:all,:include =>:maker, :conditions =>['makers.maker_name like :value or code like :value or name like :value', {:value=> '%' +params[:search_form]+ '%'}]) 
> 
> 
> Started GET "/products/search?utf8=%E2%9C%93&search_form=%E3%82%A2%E3%82%AB%E3%82%BB&commit=%E5%95%86%E5%93%81%E6%A4%9C%E7%B4%A2" for 127.0.0.1 at 2011-08-15 23:04:57 +0900 
>  Processing by ProductsController#search as HTML
>  Parameters: {"utf8"=>"", "search_form"=>"アカセ", "commit"=>"商品検索"}
>  Product Load (0.3ms) SELECT "products"."id" AS t0_r0, "products"."name" AS t0_r1, "products"."price" AS t0_r2, "products"."created_at" AS t0_r3, "products"."updated_at" AS t0_r4, "products"."code" AS t0_r5, "products"."cost" AS t0_r6, "products"."quantity" AS t0_r7, "products"."maker_id" AS t0_r8, "products"."cloth_id" AS t0_r9, "products"."category_id" AS t0_r10, "makers"."id" AS t1_r0, "makers"."maker_name" AS t1_r1, "makers"."created_at" AS t1_r2, "makers"."updated_at" AS t1_r3 FROM "products" LEFT OUTER JOIN "makers" ON "makers"."id" = "products"."maker_id" WHERE (makers.maker_name like '%アカセ%' or code like '%アカセ%' or name like '%アカセ%') ORDER BY created_at DESC
> SQLite3::SQLException: ambiguous column name: created_at: SELECT "products"."id" AS t0_r0, "products"."name" AS t0_r1, "products"."price" AS t0_r2, "products"."created_at" AS t0_r3, "products"."updated_at" AS t0_r4, "products"."code" AS t0_r5, "products"."cost" AS t0_r6, "products"."quantity" AS t0_r7, "products"."maker_id" AS t0_r8, "products"."cloth_id" AS t0_r9, "products"."category_id" AS t0_r10, "makers"."id" AS t1_r0, "makers"."maker_name" AS t1_r1, "makers"."created_at" AS t1_r2, "makers"."updated_at" AS t1_r3 FROM "products" LEFT OUTER JOIN "makers" ON "makers"."id" = "products"."maker_id" WHERE (makers.maker_name like '%アカセ%' or code like '%アカセ%' or name like '%アカセ%') ORDER BY created_at DESC
> Completed  in 79ms
> 
> ActiveRecord::StatementInvalid (SQLite3::SQLException: ambiguous column name: created_at: SELECT "products"."id" AS t0_r0, "products"."name" AS t0_r1, "products"."price" AS t0_r2, "products"."created_at" AS t0_r3, "products"."updated_at" AS t0_r4, "products"."code" AS t0_r5, "products"."cost" AS t0_r6, "products"."quantity" AS t0_r7, "products"."maker_id" AS t0_r8, "products"."cloth_id" AS t0_r9, "products"."category_id" AS t0_r10, "makers"."id" AS t1_r0, "makers"."maker_name" AS t1_r1, "makers"."created_at" AS t1_r2, "makers"."updated_at" AS t1_r3 FROM "products" LEFT OUTER JOIN "makers" ON "makers"."id" = "products"."maker_id" WHERE (makers.maker_name like '%アカセ%' or code like '%アカセ%' or name like '%アカセ%') ORDER BY created_at DESC): 
>  app/controllers/products_controller.rb:24:in `search'
> 
> Rendered .bundle/ruby/1.9.1/gems/actionpack-3.0.4/lib/action_dispatch/middleware/templates/rescues/_trace.erb (1.1ms)
> Rendered .bundle/ruby/1.9.1/gems/actionpack-3.0.4/lib/action_dispatch/middleware/templates/rescues/_request_and_response.erb (4.7ms)
> Rendered .bundle/ruby/1.9.1/gems/actionpack-3.0.4/lib/action_dispatch/middleware/templates/rescues/diagnostics.erb within rescues/layout (9.4ms)
> 
> 
> 
> 2011年8月15日22:54 前島真一 <netwillnet@g... (mailto:netwillnet@g...)>:
> >  前島です。
> > 
> >  "maker"だとエラーは出ないですか?
> >  あと、Product, Maker それぞれのDB定義(db/migration 配下の各ファイル) を見せてもらえますか?
> > 
> >  2011年8月15日22:35 sohara <gggsjp2@g... (mailto:gggsjp2@g...)>:
> > > 前島様
> > > ありがとうございます。
> > > maksesでやってみましたが、エラーが表示されました^^;
> > > どこか他にご指摘がございましたら、ご教授くださいませ。
> > > @products =Product.find(:all,:include =>:maker, :conditions
> > > =>['makers.maker_name like :value or code like :value or name like :value',
> > > {:value=> '%' +params[:search_form]+ '%'}])
> > >
> > > ActiveRecord::StatementInvalid in ProductsController
> > >
> > > SQLite3::SQLException: ambiguous column name: created_at: SELECT
> > > "products"."id" AS t0_r0, "products"."name" AS t0_r1, "products"."price" AS
> > > t0_r2, "products"."created_at" AS t0_r3, "products"."updated_at" ・・・
> > >
> > > 曽原
> > > gggsjp2@g... (mailto:gggsjp2@g...)
> > >
> > >
> > 
> > 
> > 
> > --
> >  前島 真一(@netwillnet)
> > http://www.willnet.in/
> > http://d.hatena.ne.jp/willnet/
> > 
> >  --
> >  ML: rails@r... (mailto:rails@r...)
> >  使い方: http://QuickML.com/
> 



添付ファイル

[前][次][番号順一覧][スレッド一覧]

   @  3599 2011-08-15 11:12 [gggsjp2@g...        ] Rails3初心者- テーブルをまたいでfind    
      3601 2011-08-15 15:24 ┗[netwillnet@g...     ]                                       
   @  3603 2011-08-15 15:35  ┗[gggsjp2@g...        ]                                     
      3605 2011-08-15 15:54   ┗[netwillnet@g...     ]                                   
   @  3606 2011-08-15 16:09    ┗[gggsjp2@g...        ]                                 
-> @  3607 2011-08-15 16:35     ┗[kakyoin.hierophant@g] Re:  Re: Rails3初心者- テーブルをまたいでfind
      3608 2011-08-15 17:08      ┣[netwillnet@g...     ]                             
   @  3610 2011-08-15 17:40      ┃┗[gggsjp2@g...        ]                           
   @  3611 2011-08-15 18:46      ┃ ┗[kakyoin.hierophant@g] Re:  Re: Re: Re: Rails3初心者- テーブルをまたいでfind
   @  3612 2011-08-16 04:11      ┃  ┗[gggsjp2@g...        ]                       
      3613 2011-08-16 09:26      ┃   ┗[netwillnet@g...     ]                     
   @  3614 2011-08-17 06:58      ┃    ┗[gggsjp2@g...        ]                   
   @  3609 2011-08-15 17:21      ┗[gggsjp2@g...        ]