6

我正在使用 will_paginate 显示从同时包含连接和选择语句的查询返回的数据。当我对数据进行分页时,条目数等于执行 select 语句之前的条目数,即使在查询之后调用 paginate 并且查询包含的元素少于 paginate 报告。

@sales = Sale.joins(:line_items).where(company_id: company_id, status: ['Complete', 'Voided'], time: (midnight_1..midnight_2)).order('id DESC')
puts @sales.length

14

@sales = @sales.select('distinct sales.*')
puts @sales.length

4

@sales.paginate(:per_page => 4, :page => params[page])
puts @sales.total_entries

14

这会导致显示指向空白页面的链接。

4

2 回答 2

10

has_many分页和加入或has_and_belongs_to_many关联 will_paginate 或任何分页解决方案总是会稍微困难一些。

如果您不需要查询加入的关联,您可以将其删除。您失去了在一次查询中获取关联行项目的好处,但您并没有损失那么多。

如果您需要对其进行查询,并且大概您想要仅包含订单项的销售,则需要将 :count 选项传递给分页调用,该选项指定用于调用的附加选项以计算那里的项目数量是。在你的情况下:

@sales.paginate(:per_page => 4, 
    :page => params[page], 
    :count => {:group => 'sales.id' })
于 2012-05-24T15:38:22.980 回答
1

假设您的销售模型 has_many :line_items,通过加入您将获得每个相关“line_item”的“销售”条目。

于 2012-05-24T15:27:11.730 回答