【问题标题】:Return Output Format From Rails PostgreSQL Query从 Rails PostgreSQL 查询返回输出格式
【发布时间】:2020-08-26 16:43:18
【问题描述】:

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

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

这会以这种格式返回计数:

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

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

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

我怎样才能以我需要的格式取回数据?

【问题讨论】:

    标签: sql ruby-on-rails postgresql ruby-on-rails-5


    【解决方案1】:

    试试下面的:

    使用自定义选择定义范围

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

    上述作用域将返回二维数组,如下所示:

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

    to_h查询后需要将数组数据转换成hash

    MyModel.count_by_date.to_h
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 2019-02-26
      • 2018-07-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多