Prevent N+1 Query Problems in index action on Active Admin.
Active Admin is a Ruby on Rails plugin that provides administration web page.
Our development team uses it for our service.
Few days ago, we bring in bullet gem, then we found N+1 query problems in some administration index pages.
I searched the way, therefore we could prevent it in following way.
(In following codes, the product model belongs to the user model and the brand model)
ActiveAdmin.register Product do ... controller do def scoped_collection Product.includes(:user, :brand) # includes User / Brand models in listing products end end index do ... column :user # The cause of column :brand # N+1 query problem ... end ... end
If you use resource of Identity model is belongs to user model, you can solve with following way.
ActiveAdmin.register Product do ... controller do def scoped_collection Product.includes({ :user => :identity }, :brand) # specify grandchild model with hash! end end index do ... column :user column :brand column('Full Name') { |product| product.user.identity.full_name } # uses grandchild model's resource, belongs to User model ... end ... end
These solutions are introdused in Active Admin's documentation.