我试图想出一个想法,如何以以下格式从数据库打印数据:
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/