【发布时间】:2012-03-03 09:38:33
【问题描述】:
场景 我有一张满是帖子的桌子,里面有一张用户表。 我希望能够获取所有帖子并按用户分组,但我希望将限制设置为每个用户 10 个。
class Post < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
has_many :posts
end
# I thought this might work but it just grabs the first 10 posts and groups them
Post.find(:all, :limit=>10).group_by(&:user)
有什么想法吗?我是否必须为此编写自定义 SQL,或者 Active Record 可以这样做?
【问题讨论】:
-
这将所有用户的获取限制为 10,而不是您请求的 per-user。如果它需要特定的 SQL 语句才能工作,您可能希望使用 MySQL 或您正在使用的任何 RDMBS 对其进行标记。
-
好的,谢谢我在帖子中添加了 sqlite3 标签
-
我不认为这是特定于数据库的。 ActiveRecord 可以自行处理。我已经更新了我的答案以反映这一点。
-
您的解决方案真的可以为每个用户获取 10 个吗?我在下面发布了一些反馈。
标签: sql ruby-on-rails activerecord sqlite group-by