sql - 选择所有用户,按评论数排序

标签 sql ruby-on-rails ruby ruby-on-rails-3

在 Rails 应用程序中,我想获取所有用户,按他们的评论数排序,以获得前十名评论者。我具体该怎么做?

在我的模型中,User 和 Comment 彼此处于 HABTM 关系中。

现在我有:

  all_users = User.all :joins => :comments
  all_users.sort_by do |user| 
    user.comments.count
  end

我仍然坚持这样一个事实,即这会为一个用户提供多个条目,因为一个用户可能有多个评论。而且我仍然必须只获得前十个用户。

执行此操作的更有效方法是什么,例如在查询本身?

谢谢

最佳答案

如果 Comment 模型中的 belongs_to :user 配置如下:

belongs_to :user, :counter_cache => true

然后您的 users 表中有一个默认为 0 的 comments_count 整数字段,然后您就可以按它进行排序,而不必进行连接。

关于sql - 选择所有用户,按评论数排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4427844/

相关文章:

sql - 是否可以在创建表时指定 Postgres 列存储类型?

sql - PostgreSQL 返回的间隔值的奇怪格式

mysql - 警告 : A long semaphore wait

ruby-on-rails - Ruby NET::HTTP 在主体之前读取 header (没有 HEAD 请求)?

ruby - 为什么在输入 (LoadError) 中找不到 Ruby 脚本?

ruby - 打印 block 的实际 Ruby 代码?

sql - 使用两个 where 子句连接两个 Athena 表

ruby-on-rails - 使用 friendly_id 一段时间后启用历史记录

ruby-on-rails - 共享服务器上的 Phusion Passenger

mysql - Ruby dbi mysql 连接