我正在研究Rails的Redmine应用程序。
我按如下方式进行查询:
re = Issue.select("sum(id) as test_total").group("tracker_id")
但是我无法得到' total_price'值。这是' re.inspect'
的结果[#<Issue >, #<Issue >, #<Issue >]
它只是一个空的Issue对象数组。
然后我在日志中看到了查询:
SELECT sum(id) as test_total FROM "issues" GROUP BY tracker_id
如果我通过数据库控制台运行此查询,结果是:
| test_total | ------------- | 1 | ------------- | 2 | ------------- | 3 | -------------
它有3行结果。
之前的&#39;有3个元素,但每个元素都是一个空的Issue对象。
我怎样才能获得&total #price&#39;来自&#39;?&#39;
谢谢。
答案 0 :(得分:1)
首先:
re.all.map &:attributes
将显示您可用的属性。
其次,你为什么要寻找&total #price&#39;当您的查询创建一个名为&#39; test_total&#39;?
的总和时re.first.test_total
应该这样做。
如果您想要合计的总数:
re.all.map(&:test_total).inject(:+)
&#39;映射&#39;通过处理块从旧的数组创建一个新数组。 &amp;:test_total是{ |i| i.test_total }
的简写,创建了一个test_total值数组。 Inject对传递给循环的每次迭代的变量执行操作。在这种情况下,它会调用&#39; +&#39;传递变量和每个数组成员的方法。有关更深入的解释,请参见此处: