Rails 3, Kaminari - Ошибка с: присоединяется при использовании paginate - PullRequest
1 голос
/ 01 апреля 2011

У меня есть функция для цен с двумя объединениями, и она прекрасно работает, когда я использую ее для вызова цен.Но теперь, когда я добавил Kaminari для возможности разбивки на страницы, это дало мне ошибку, и мне стало интересно, могу ли я настроить функцию "count *" в Kaminari или это моя функция для вызова неправильных продуктов?

Это в моем контроллере

 @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)

Когда я вызываю продукты без Kaminari, 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) 

Спасибо взаранее!

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

: продавец дублируется внутри вашего предложения о присоединении. Пожалуйста, измените параметры соединения на

.joins (: retailer =>: профиль)

0 голосов
/ 11 апреля 2011

Если неоднозначная ошибка, попробуйте явный синтаксис для retailer_id.

например. retailers.retailer_id, profiles.retailer_id, prices.retailer_id.

луч

...