Ruby on rails 3 由于组关键字,Kaminari无法工作

Ruby on rails 3 由于组关键字,Kaminari无法工作,ruby-on-rails-3,kaminari,Ruby On Rails 3,Kaminari,其中registered=where(“已停用的位置为空,最后一次登录的位置不为空”) Kaminari不使用组子句。如何在此查询中优化group子句?我使用以下方法修复了它: @users = User.registred .includes(:items) .joins('LEFT OUTER JOIN items ON users.id=items.user_id') .group(User.column_names.collect do |

其中
registered=where(“已停用的位置为空,最后一次登录的位置不为空”)

Kaminari不使用组子句。如何在此查询中优化group子句?

我使用以下方法修复了它:

@users = User.registred
        .includes(:items)
        .joins('LEFT OUTER JOIN items ON users.id=items.user_id')
        .group(User.column_names.collect do |c| "#{User.table_name}.#{c}" end.join(','))
        .order('CASE WHEN LENGTH(users.profile_picture) > 0 THEN 0 ELSE 1 END, followers_count DESC, bibbed_items_count DESC, SUM(items.user_likes_count) DESC, users.id')

有相同的问题,像您一样修复了它-在
子句中提供适当的
id
值。但是,显然它不需要替换原来的group子句-只需附加一个额外的调用:

@users = User.registred
        .includes(:items)
        .joins('LEFT OUTER JOIN items ON users.id=items.user_id')
        .group("users.id")
        .order('CASE WHEN LENGTH(users.profile_picture) > 0 THEN 0 ELSE 1 END, followers_count DESC, bibbed_items_count DESC, SUM(items.user_likes_count) DESC, users.id')

@users = @users.page(params[:page])

我想这可能会对您有所帮助:我看不出您在哪里调用
page
方法……您不需要新的group子句。如果将users.id放在第一个group子句的末尾,它将起作用。谢谢你的回答,因为你我才明白。
@users = User.registred
    .includes(:items)
    .joins('LEFT OUTER JOIN items ON users.id=items.user_id')
    .group(User.column_names.collect do |c| "#{User.table_name}.#{c}" end.join(','))
    .order('CASE WHEN LENGTH(users.profile_picture) > 0 THEN 0 ELSE 1 END, followers_count DESC, bibbed_items_count DESC, SUM(items.user_likes_count) DESC, users.id')
    .group('users.id')