我正在我的产品中进行一些静力学计算。用户执行了许多操作,比如说发表评论。我希望能够向他们展示他们过去一个月每周或过去一年每月发布的评论数量。
activerecord 有没有办法以这种方式分组?我最好是简单地手动执行此操作 - 根据我自己的标准迭代记录总和?
class User < ActiveRecord::Base
has_many :comments
end
class Comments < ActiveRecord::Base
belongs_to :user
end
@user.comments(:all).map {|c| ...do my calculations here...}
或者有更好的方法吗?
谢谢!
奥伦
最佳答案
在 Postgres 中,您可以执行以下操作:
@user.comments.group("DATE_TRUNC('month', created_at)").count
要得到:
{"2012-08-01 00:00:00"=>152, "2012-07-01 00:00:00"=>57, "2012-09-01 00:00:00"=>132}
它接受从“微秒”到“千年”的值进行分组:
http://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
关于ruby-on-rails - 按周/月/等和 ActiveRecord 分组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/902974/