如何在Rails中覆盖ActiveAdmin中的default_scope

时间:2012-02-27 20:41:20

标签: ruby-on-rails activeadmin default-scope

在使用ActiveAdmin注册的资源中,我为模型定义了以下default_scope:

default_scope :order => 'activities.updated_at DESC'

这显然阻止我通过单击列标题来更改资源索引页面上的排序。有没有办法保持这个默认范围,但让Active Admin排序工作?

4 个答案:

答案 0 :(得分:37)

ActiveAdmin.register Post do
  controller do
    def scoped_collection
      Post.unscoped
    end
  end
end 

答案 1 :(得分:2)

scope('all', default: true) { |scope| scope.where(...) }

答案 2 :(得分:1)

试试这个解决方案。

#/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

答案 3 :(得分:-1)

您是尝试调整活动的范围还是只是对它们进行排序,因为此调用仅对它们进行排序,实际上并不是在最严格的想法中确定查询的范围。

据我所知ActiveAdmin以及他们的文档说明,您应该将其设置为这样。

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