Reputation: 12399
I have the following models
class User < ActiveRecord::Base
has_many :reviews
end
class Review < ActiveRecord::Base
belongs_to :user
end
I would like to sort the users on my ActiveDdmin page by the number of reviews that each user has.
I tried this, but no luck: (from 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
Upvotes: 2
Views: 2983
Reputation: 4578
I'd suggest to use a counter_cache on your user model for your reviews and then simply use this column in ActiveAdmin directly:
index do
# ...
column "No. of reviews", :sortable => :reviews_count
end
Upvotes: 7