2013-04-10 94 views
2

我有以下型号ActiveAdmin:排序关联计数

class User < ActiveRecord::Base 
    has_many :reviews 
end 

class Review < ActiveRecord::Base 
    belongs_to :user 
end 

我想你认为每个用户 拥有的数量我ActiveDdmin页面上的用户进行排序。

我想这一点,但没有运气:(从this SO question

ActiveAdmin.register User do 
    filter :name 
    index do 
    column :name 
    column :email 
    column "Facebook" do |u| 
     if u.provider == "facebook" 
     "Yes" 
     end 
    end 
    column "No. of reviews", :sortable => :"reviews.count" do |u| 
     u.reviews.count 
    end 

    end 

    controller do 
    def scoped_collection 
     end_of_association_chain.includes(:reviews) 
    end 
    end 
end 

回答

5

我建议在您的用户模型使用counter_cache您的评论,然后只需在ActiveAdmin直接使用此列:

index do 
    # ... 
    column "No. of reviews", :sortable => :reviews_count 
end