在ActiveAdmin中过滤时跳过默认范围

时间:2018-10-03 15:56:21

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

我在ActiveAdmin中具有默认范围,不包括“待定”状态,因为我们有很多这种状态,并且我们不想默认看到它。但是,当我们通过过滤器进行搜索时,我们希望跳过此默认范围,并包含“待处理”状态。该怎么做?

我的模特:

class MyModel < ActiveRecord::Base
   validates :status, presence: true,
                      inclusion: { in: %w(pending published accepted declined cancelled) } 
   scope :published, lambda {
      where("bookings.published_at IS NOT NULL")
   }   
end

ActiveAdmin模型:

ActiveAdmin.register MyModel do
  actions :index, :show

  config.sort_order = "locked_at_desc"
  config.scope :published, default: true

  index do
    column :id
    column :status
    actions
  end
end

1 个答案:

答案 0 :(得分:1)

您需要在管理文件中添加:all范围。然后,您可以按过滤器进行搜索,该过滤器会在pending范围内包含:all状态。如果您需要加快所有记录的加载速度,可以在show_count: false范围内提供:all

ActiveAdmin.register MyModel do
  ...
  scope :published, default: true
  scope :all # scope :all, show_count: false
  ...
end