按创建日期的日期跟踪组记录

所以我有一个模型,我想要检索记录,并按created_at字段的日期对它们进行分组。 但created_at是一个日期时间字段,我只对日期部分感兴趣。 所以我正在寻找类似2D数组的东西,第一层是以日期字符串为键的哈希,第二层是带记录的数组。 我该怎么办?

 {
 “9/28/2012”=> [记录,记录,记录],
 “9/29/2012”=> [记录,记录,记录],
 “9/30/2012”=> [记录,记录,记录]
 }

除此之外,如果我希望将上述安排应用于从该模型中检索到的所有记录,我该怎么办呢?

ActiveRecord 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选择正确的转换语法。