Return 来自 Rails PostgreSQL 查询的输出格式

Return Output Format From Rails PostgreSQL Query

我正在编写一个范围以按 created_at 日期对 PageView 进行分组,然后检索每个日期的计数。这是我的范围:

scope :count_by_date, -> { group('date(created_at)').count }

这个 returns 这种格式的计数:

{Wed, 26 Aug 2020=>3, Tue, 25 Aug 2020=>8}

然后我将这些数据与 Chart.js 结合使用,在我的应用程序中创建各种图表。我遇到的问题是我需要从范围返回的散列采用这种格式,这样我就可以使用键和值作为图表 x 和 y 值:

{"2020-08-26"=>3, "2020-08-25"=>8}

如何以我需要的格式取回数据?

试试下面的方法:

使用自定义定义范围 select

scope :count_by_date, -> { 
  group('DATE(created_at)')
   .pluck('DATE(created_at)::varchar', 'COUNT(*)')
}

以上范围将 return 二维数组如下所示:

[["2020-08-11", 1], ["2020-08-24", 5], ["2020-08-14", 1]]

to_h

查询后需要将数组数据转成hash
MyModel.count_by_date.to_h