如何按第一个created_at进行分组?

时间:2016-11-19 13:53:38

标签: ruby-on-rails ruby activerecord

我有一个名为Posts的模型,由User创建。每个帖子都有一个created_at属性。我想弄清楚从开始日期到结束日期的每个日期第一次发布了多少用户。

我正试图得到这样的结果:

1/1/2016: 15 posted for the first time
2/1/2016: 4 posted for the first time
3/1/2016: 0 posted for the first time
...

使用ActiveRecord高效执行此操作的最佳方法是什么? :)

1 个答案:

答案 0 :(得分:0)

您应该做的第一件事是获取帖子created_at

的日期
class Post < ActiveRecord::Base
  ...
  def created_at_date 
    created_at.to_date
  end
  ...
end

现在你在post类中有了这个方法,你现在可以访问它了

class User < ActiveRecord::Base
  ...
  def get_first_post_created_at
    posts.first. created_at_date
  end
  ...
end

现在可以做的最后一件事就是我们的小组by get_first_post_created_at

class User < ActiveRecord::Base
  ...
  def self.group_by_first_post_created
    User.all.group_by(&:get_first_post_created_at)
  end
  ...
end

我希望这能帮到你:)