GROUP_BY内的活动记录限制

SCENARIO我有一张桌子,上面有一张带有用户表的post。 我希望能够获取所有post并将其分组给用户,但我想为每个用户设置10个限制。

class Post < ActiveRecord::Base belongs_to :user end class User 10).group_by(&:user) 

有什么想法吗? 我是否必须编写自定义SQL,或者Active Record可以执行此操作吗?

就像是?

 Post.group(:user_id).limit(10) 
 Post.group(:user_id).limit(10) 

group_by不是查询方法,而是Enumerable的方法。

在您的代码中, Post.find(:all, :limit => 10)在传递给group_by之前变为一个Array 。 上面的方法将查询方法链接在一起,只在需要使用它们时才将它们转换为Array

ActiveRecord处理整个事情。 上述方法转化为

 SELECT `posts`.* FROM `posts` GROUP BY user_id LIMIT 10