ruby-on-rails - rails 按 created_at 的日期分组记录

标签 ruby-on-rails

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

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

关于ruby-on-rails - rails 按 created_at 的日期分组记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12657753/

相关文章:

ruby-on-rails - Rails : to_json method, 添加函数返回值

ruby-on-rails - 如何将heroku上回形针的上传目录更改为/tmp?

ruby-on-rails - Rails 4设计: How to log out all users

ruby-on-rails - 思考 sphinx rails 不运行

ruby-on-rails - 许多不同模型的评论 : polymorphic or not? (Ruby on Rails)

ruby-on-rails - Rails 4关联验证销毁

ruby-on-rails - 使用 JBuilder 内联数组元素

ruby-on-rails - 在 Rails 中进行每用户数据库连接的最佳方法是什么

jquery - Rails 在使用 Ajax 时创建重复记录并进行两次调用以删除相同记录

ruby-on-rails - 如何正确编写具有 N-N 关系的嵌套表单