在ActiveRecord中,可以使用order
方法按照关联关系进行排序。下面是一个示例:
假设有两个模型User
和Post
,一个用户可以有多个帖子。我们想按照用户的帖子数量进行排序,可以按照以下步骤进行操作:
User
模型中定义关联关系:class User < ApplicationRecord
has_many :posts
end
class UsersController < ApplicationController
def index
@users = User.includes(:posts).order('COUNT(posts.id) DESC').group('users.id')
end
end
在上面的示例中,includes(:posts)
用于预加载用户的帖子,order('COUNT(posts.id) DESC')
用于按照帖子数量降序排序,group('users.id')
用于按照用户ID进行分组。
<% @users.each do |user| %>
<%= user.name %>
<% end %>
通过上述步骤,我们可以按照用户的帖子数量进行排序并显示用户列表。