如何模仿ActiveRecord .includes()返回集,通过使用连接



我想要一个这样的返回集

A
.select('a.id, a.name, b.date, SUM(b.amount)')
.includes(:b)
.group('a.id, b.date")

.includes()则忽略了.select()。我使用类似这样的东西生成一个几乎相同的查询。(但与我选定的项目)

A
.select('a.id, a.name, b.date, SUM(b.amount)')
.joins('LEFT OUTER JOIN b ON a.b_id = b.id')
.group('a.id, b.date")

然而,问题是Rails不知道如何处理B属性。它不像.includes()那样构造嵌套的结果集。

问题:是否有可能得到一个像。includes结构的返回集,但是使用。JOINS ('LEFT JOINS')。

我一直在探索一些想法,其中包括手动迭代返回集,并模拟A.new()B.new()并创建我正在寻找的嵌套结果。

Andrew

你可以试试下面的代码,看看它是否有效

A
.joins(:b)
.select('a.id, a.name, b.date, SUM(b.amount)')
.group('a.id, b.date")

最新更新