Rails围绕Active Record查询结果

时间:2016-08-02 19:29:38

标签: ruby-on-rails activerecord

简单的问题我似乎无法弄明白:

在控制器中:

@clientsMonthYearQuery = Client.group(:month_year)

在视图中,我有这个查询

@clientsMonthYearQuery.average(:charge)

如何对查询结果进行舍入以将平均值四舍五入为2个小数点?

*注意在视图中链接AR calc有一个商业原因,我给出的例子是从真实的东西中简化

2 个答案:

答案 0 :(得分:1)

我试图用chartkick做同样的事情时遇到过这个问题。我将结果转换为数组(实际上每个子数组为[client,charge]的数组数组),然后舍入每个子数组中的第二个值,如下所示:

@clientsMonthYearQuery.average(:charge).to_a
@clientsMonthYearQuery.each do |record|
  record[1] = record[1].round(2)
end

我在控制器中这样做。您当然可以将结果保存为哈希并以类似方式迭代它,但我更喜欢数组(并且chartkick同时接受这两个),这对我有用。

答案 1 :(得分:0)

您可以对ActiveRecord查询返回的数字进行舍入,如下所示:

@clientsMonthYearQuery.average(:charge).round(2)

如果你在视图中这样做,你也可以使用这个方便的Rails Helper:

<%= number_with_precision @clientsMonthYearQuery.average(:charge), :precision => 2 %>