我正在做一些静态计算,一个用户执行了很多操作,比如说发表评论,我希望能够显示他们在过去一个月每周发表了多少评论,或者过去一年每月发表了多少评论。
有没有什么方法可以用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...}
还是有更好的办法
谢谢!奥伦
7条答案
按热度按时间ttvkxqim1#
在Postgres中,您可以:
以获得:
它接受从“微秒”到“千分之一”的值进行分组:http://www.postgresql.org/docs/8.1/static/functions-datetime.html#FUNCTIONS-DATETIME-TRUNC
py49o6xq2#
在这种情况下,对我来说最好的解决方案是要么直接用SQL,要么使用Ruby group_by函数:
a64a0gku3#
这是更精确的版本
还有
hpcdzsge4#
我的猜测是这样的:
干码、ymmv
wfauudbj5#
使用分组依据(_B)
这将为您提供YYYY-WW格式的分组列表
ddhy6vgd6#
查看has_activity插件。
bksxznpy7#
查看组日期gem
https://github.com/ankane/groupdate
它有最近的提交,与postgresql一起工作,很容易与chart kick集成以实现快速制图,并与时区一起工作!!