首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Kaminari/Ransack -排序和分页问题

Kaminari/Ransack -排序和分页问题
EN

Stack Overflow用户
提问于 2018-03-15 05:03:22
回答 1查看 462关注 0票数 0

我使用Ransack、Kaminari和Postgres在我的Rails控制器中执行查询/分页,我有以下代码:

代码语言:javascript
复制
ransack = current_user.condition? ? @company.contacts.ransack(params[:q]) :
current_user.contacts.ransack(params[:q])
ransack.sorts = 'id desc' if ransack.sorts.empty?
contacts = ransack.result.includes(:table1, :table2)
contacts = contacts.page(params[:page]).per(params[:per])
render json: contacts,
       meta: pagination(contacts, total_count: true)

分页方法定义如下:

代码语言:javascript
复制
def pagination(kaminari, total_count: false)
   return unless kaminari.respond_to?(:current_page)
   pagination = {
      current_page: kaminari.current_page,
      next_page: kaminari.next_page,
      prev_page: kaminari.prev_page
   }
   pagination[:total_count] = kaminari.total_count if total_count
   pagination
end

有了这段代码,一切都能按预期运行。但是,如果我将排序行更改为:

代码语言:javascript
复制
ransack.sorts = 'created_at desc' if ransack.sorts.empty?

然后我开始在我的结果中收到重复的和不想要的条目。有人能告诉我为什么会发生这种事吗?

EN

回答 1

Stack Overflow用户

发布于 2018-03-15 14:37:15

您的结果中有一些字段,并且这些表中的每个表都可能有一个created_at字段,因此您的排序可能不明确。

在控制台中查看在运行此查询时生成的SQL是值得的,但您可能会发现将“排序”行更改为:

用于消除排序歧义的...helps。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49287594

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档