ActiveAdmin: сортировка по количеству ассоциаций

У меня есть следующие модели

class User < ActiveRecord::Base
   has_many :reviews
end

class Review < ActiveRecord::Base
   belongs_to :user
end

Я хотел бы отсортировать пользователей на моей странице ActiveDdmin по количеству отзывов, которые у каждого пользователя есть.

Я пробовал это, но не повезло: (из этого вопроса SO)

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

person AlexBrand    schedule 10.04.2013    source источник


Ответы (1)


Я бы предложил использовать counter_cache в вашей пользовательской модели для ваших обзоров, а затем просто использовать этот столбец в ActiveAdmin напрямую:

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