Как переопределить default_scope в ActiveAdmin в Rails

В ресурсе, зарегистрированном в ActiveAdmin, для модели определен следующий default_scope:

default_scope :order => 'activities.updated_at DESC'

Это, по-видимому, лишает меня возможности изменять сортировку на странице индекса ресурса, щелкая заголовки столбцов. Есть ли способ сохранить эту область по умолчанию, но заставить сортировку Active Admin работать?

5 ответов

ActiveAdmin.register Post do
  controller do
    def scoped_collection
      Post.unscoped
    end
  end
end 
scope('all', default: true) { |scope| scope.where(...) }

Попробуйте это решение.

#/admin/user.rb
controller do
  # for index page
  def active_admin_collection
    User.unscoped { super }
  end

  # for show, edit
  def resource
    User.unscoped { super }
  end
end
  scope_to do
   Class.new do
    def self.cookies
     Cookie.unscoped
    end
   end
  end

больше здесь: http://blogs.burnsidedigital.com/2012/09/ignoring-default_scope-in-activeadmin/

Вы пытаетесь охватить действия или просто упорядочить их, потому что этот вызов только упорядочивает их, на самом деле это не ограничивает запрос самой строгой идеей.

Из того, что я знаю ActiveAdmin и из того, что говорится в их документации, вы, вероятно, должны настроить это следующим образом.

  class Activities < ActiveRecord::Base
    default_scope lambda { where :updated_at => true }
  end
Другие вопросы по тегам