所以我有一个模型,我想检索记录并按created_at字段的日期对它们进行分组。但created_at是一个日期时间字段,我只对日期部分感兴趣。所以我正在寻找类似二维数组的东西,第一层是一个以日期字符串为键的哈希,第二层是带有记录的数组。我该怎么做呢?
{
"9/28/2012" => [record, record, record],
"9/29/2012" => [record, record, record],
"9/30/2012" => [record, record, record]
}
除此之外,如果我希望将上述安排应用于从此模型检索到的所有记录,我该怎么做?
活动记录group
方法将满足您的需要。在你的情况下,问题在于使用created_at
这是一个日期时间,以及您按日期分组的约束。由于将日期时间转换为日期是特定于数据库的,因此代码也需要特定于数据库。
对于 MySql 你可以这样做:
Model.group("date(table_name.created_at)")
对于 SQLite 你可以这样做:
Model.group("strftime('%Y-%m-%d', table_name.created_at)")
对于 PostgreSQL:
Model.group("table_name.created_at::date")
不幸的是,该代码不可移植,但这对您来说可能并不重要。如果是这样,您始终可以构建一个包装器方法,根据您的 DBMS 选择正确的转换语法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)