我有一个按预期工作的查询,但结果是作为模型数组返回,而不是值。查询转换日期,然后按该日期分组。
ActiveRecord查询语句:
Participant.
select(
"count(*)",
"date_trunc('month', participants.completed_at) as Date").
group('Date')
返回:
[ #<Participant id: nil>,
#<Participant id: nil>,
#<Participant id: nil>,
#<Participant id: nil> ]
有趣的是,相关数据存在于参与者身上......例如,如果我查看模型,它会向我显示我需要的信息:
pry(main)> results.first.attributes
=> {"count"=>70, "date"=>2014-04-01 00:00:00 UTC, "id"=>nil}
但它有点奇怪,因为count
和date
都不是该模型的属性。
原始SQL查询:
SELECT
count(*),
date_trunc('month', participants.completed_at) as Date
FROM "participants"
WHERE "participants"."deleted_at" IS NULL
GROUP BY Date;
返回:
count | date
-------+---------------------
5742 | [NULL]
590 | 2016-05-01 00:00:00
798 | 2016-06-01 00:00:00
293 | 2017-01-01 00:00:00
我知道我可以简单地将结果映射到我想要的格式,但是我想直接从ActiveRecord语句中获取数据作为数组或散列,而不是模型对象。