mysql - Rails - 如何从数据库中选择数据并按天打印出来?

标签 mysql ruby-on-rails ruby date

我试图想出一个想法,如何以以下格式从数据库打印数据:

January 25
- record 1
- record 2
- record 3
- record 4
- record ...

January 26
- record 1
- record 2
- record 3
- record 4
- record ...

...

有什么方法可以用ActiveRecord来做到这一点吗? 我唯一的想法是从数据库中获取数据(@data = Model.order(created_at DESC).limit(50)),然后在相应的 View 中拥有一个帮助变量,我将在其中保留当前数据,并且当在通过 @data 的循环中记录的日期与帮助变量中的日期不同时,我会将这个新日期保存到帮助变量中并继续循环。

但这不是很清晰和优雅,并且可能会出现一个问题,我将打印出日期,并且不会打印出来自 @data 的数据,如下所示:

1 月 25 日 - 记录1 - 记录2 - 记录3 - 记录4 - 记录...

January 26
- record 1
- record 2
- record 3
- record 4
- record ...

January 27
[nothing here]

解决这个问题的最佳方法是什么?

提前谢谢您。

最佳答案

您想要的转换称为分组。有一个special method对于 Ruby 来说。对于你的情况,你可以这样做

Model.order(created_at: :desc).limit(50).group_by { |record| record.created_at.to_date }

另外,请注意order(created_at: :desc);它是 SQL 的语法糖。

关于mysql - Rails - 如何从数据库中选择数据并按天打印出来?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28138270/

相关文章:

php - mysql 根据连接查询和最新日期时间获取所有行

mysql - 连接到 mysql 数据库时 ruby​​ 中的连接被拒绝错误

ruby - 使用 "global"雷神文件

ruby-on-rails - Ruby on Rails 和 Redis:未初始化的常量 Redis::Namespace

ruby-on-rails - 运行具有生命周期的 rails cron 作业

mysql - 如何为用户通知去规范化 mysql 数据库?

mysql - 获取日期之间特定工作日的数量

MySQL 最大 unix 时间戳转为人类可读格式

ruby-on-rails - 如何配置oauth回调的路由

ruby-on-rails - heroku登录无法验证第一个证书