Rails 3,Kaminari - 错误:使用paginate时加入

时间:2011-03-31 21:23:24

标签: mysql ruby-on-rails-3 pagination kaminari

我有一个带有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)

当我在没有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 :(得分:0)

如果出现模糊错误,请尝试使用retailer_id的显式语法。

e.g。 retailers.retailer_id, profiles.retailer_id, prices.retailer_id。

射线

答案 1 :(得分:0)

:零售商在您的加入条款中重复。 请将您的加入参数更改为

  

.joins(:retailer =>:个人资料)