Как переопределить default_scope в ActiveAdmin в Rails - PullRequest
11 голосов
/ 28 февраля 2012

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

default_scope :order => 'activities.updated_at DESC'

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

Ответы [ 5 ]

37 голосов
/ 03 апреля 2012
ActiveAdmin.register Post do
  controller do
    def scoped_collection
      Post.unscoped
    end
  end
end 
2 голосов
/ 27 декабря 2017
scope('all', default: true) { |scope| scope.where(...) }
1 голос
/ 08 октября 2013

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

#/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
1 голос
/ 19 сентября 2012
  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/

0 голосов
/ 28 февраля 2012

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

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

  class Activities < ActiveRecord::Base
    default_scope lambda { where :updated_at => true }
  end
...