将 distinct 与另一个条件相结合

Combining distinct with another condition

我正在将 Rails 3.2 应用程序迁移到 Rails 5.1(不早于时间),我遇到了一个 where 查询问题。

适用于 Rails 3.2 的代码如下所示,

sales = SalesActivity.select('DISTINCT batch_id').where('salesperson_id = ?', sales_id)

sales.find_each(batch_size: 2000) do |batchToProcess|
    .....

当我在 Rails 5.1 下 运行 这段代码时,当它尝试 for_each、

时似乎会导致以下错误
ArgumentError (Primary key not included in the custom select clause):

我想为给定的 salesperson_id 得到一个唯一的 batch_ids 数组(?),然后我可以遍历它,就像使用 Rails 3.2 一样。

由于我不明白的原因,看起来我可能需要包含整个记录才能遍历(我的想法是我需要包含主键)?

我正在尝试重新措辞 'where',并尝试了以下方法,

sales = SalesActivity.where(salesperson_id: sales_id).select(:batch_id).distinct

但是,组合的 ActiveRecordQuery 将 DISTINCT 应​​用于 salesperson_id 和 batch_id - 即 #FAIL1

此外,因为我仍在使用 select(让 distinct 知道我想成为哪一列 'distinct')它也仍然只有 select 是 batch_id 列当然,我试图避免 - 那是 #FAIL2

我如何有效地提取给定 salesperson_id 的所有唯一 batch_id 记录,然后我可以 for_each 它们?

谢谢!

怎么样:

SalesActivity.where(salesperson_id: sales_id).pluck('DISTINCT batch_id')

可能需要更改 wherepluck 的顺序,但是 pluck 应该 return [=19] 的数组=]