如何在Rails中覆盖ActiveAdmin中的default_scope

Joh*_*ohn 12 ruby-on-rails default-scope activeadmin

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

default_scope :order => 'activities.updated_at DESC'
Run Code Online (Sandbox Code Playgroud)

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

pat*_*ick 37

ActiveAdmin.register Post do
  controller do
    def scoped_collection
      Post.unscoped
    end
  end
end 
Run Code Online (Sandbox Code Playgroud)


Ziv*_*ber 7

scope('all', default: true) { |scope| scope.where(...) }
Run Code Online (Sandbox Code Playgroud)


Jus*_*ick -1

您是否正在尝试确定活动的范围或只是对它们进行排序,因为此调用仅对它们进行排序,实际上并没有以最严格的方式确定查询的范围。

据我所知ActiveAdmin以及他们的文档所述,您可能应该这样设置。

  class Activities < ActiveRecord::Base
    default_scope lambda { where :updated_at => true }
  end
Run Code Online (Sandbox Code Playgroud)