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
我正在编写一个范围以按 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
MyModel.count_by_date.to_h