1

私は2つの結合を持つ価格の関数を持っています。それを使用して価格を呼び出すと、うまく機能します。しかし、ページネーションを可能にするためにKaminariを追加すると、エラーが発生し、Kaminariの「count*」関数をカスタマイズできるのでしょうか、それとも製品を呼び出す関数が間違っているのでしょうか?

これは私のコントローラーにあります

 @prices   = Price.select("`prices`.*").joins(:retailer, :retailer => :profile).
        where(['product_id=? AND size_id=?', params[:prod_id], params[:si_id]]).
        group(:retailer_id).order("SUM((prices.price * #{params[:amount].to_i}) + profiles.shippingCost)").page(params[:page])

エラーコード:

Mysql2::Error: Column 'retailer_id' in field list is ambiguous: SELECT COUNT(*) AS count_all, retailer_id AS retailer_id FROM `prices` INNER JOIN `retailers` ON `retailers`.`id` = `prices`.`retailer_id` INNER JOIN `profiles` ON `profiles`.`retailer_id` = `retailers`.`id` WHERE (product_id='1' AND size_id='3') GROUP BY retailer_id,retailer_id ORDER BY SUM((prices.price * 1) + profiles.shippingCost)

カミナリなしの製品を呼び出すと、MYSQL は次のようになります。

SELECT `prices`.* FROM `prices` INNER JOIN `retailers` ON `retailers`.`id` = `prices`.`retailer_id` INNER JOIN `profiles` ON `profiles`.`retailer_id` = `retailers`.`id` WHERE (product_id='1' AND size_id='3') GROUP BY retailer_id ORDER BY SUM((prices.price * 1) + profiles.shippingCost) 

前もって感謝します!

4

2 に答える 2

0

:retailerはjoin句内で複製されます。参加パラメータを次のように変更してください

.joins(:retailer =>:profile)

于 2011-05-05T02:00:16.100 に答える
0

あいまいなエラーの場合は、retailer_id の明示的な構文を試してください。

例: Retailers.retailer_id、profiles.retailer_id、prices.retailer_id。

レイ

于 2011-04-11T16:27:02.307 に答える