ruby-on-rails - 按周/月/等和 ActiveRecord 分组?

标签 ruby-on-rails activerecord grouping

我正在我的产品中进行一些静力学计算。用户执行了许多操作,比如说发表评论。我希望能够向他们展示他们过去一个月每周或过去一年每月发布的评论数量。

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/

相关文章:

ruby-on-rails - 使用 Gem 加载资源(遇到问题将无法加载资源)

ruby-on-rails - 不在映射中的字段包含在 ElasticSearch 返回的搜索结果中

R(数据表): computing mean after join in most efficient way

mysql - 如何对重复值进行分组以找到系列的开始和结束?

sql-server - TSQL - 困难的分组

ruby-on-rails - 查询按关联表列排序的结果,仅限最近的关联

ruby-on-rails - Rails 初始化校验和错误

ruby-on-rails - 为什么要执行这个回调?

ruby-on-rails - 从 exec_query 实例化 STI 继承模型结果

ruby-on-rails - 源表别名