我正在将一个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\u each时,似乎会导致以下错误,
ArgumentError (Primary key not included in the custom select clause):
我想以数组(?)结束然后我可以遍历给定salesperson\u id的唯一batch\u id,就像使用Rails 3.2一样。
出于我不理解的原因,看起来我可能需要包含要遍历的整个记录(我的想法是需要包含主键)?
我试图重新表述“where”,并尝试了以下内容,
sales = SalesActivity.where(salesperson_id: sales_id).select(:batch_id).distinct
但是,组合ActiveRecordQuery将DISTINCT应用于salesperson\u id和batch\u id,这就是失败1
此外,因为我仍在使用select(让distinct知道我要“distinct”的列),它当然也只选择batch\u id列,这是我试图避免的-这就是#FAIL2
如何有效地提取给定salesperson\u id的所有唯一batch\u id记录,以便为每个记录提取批次id?
谢谢