在 ActiveAdmin 中过滤时跳过默认范围
Skip default scope when you filtering in ActiveAdmin
我在 ActiveAdmin 中有一个默认范围,不包括 'pending' 状态,因为我们有很多这种状态,默认情况下我们不想看到它。但是当我们通过过滤器搜索时,我们想跳过这个默认范围并包括 'pending' 状态。如何做到这一点?
我的模型:
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
您需要在管理文件中添加 :all
范围。然后您可以通过过滤器进行搜索,该过滤器将 包含 :all
范围 下的 pending
状态。如果您需要加速加载所有记录,您可以在 :all
范围内提供 show_count: false
。
ActiveAdmin.register MyModel do
...
scope :published, default: true
scope :all # scope :all, show_count: false
...
end
我在 ActiveAdmin 中有一个默认范围,不包括 'pending' 状态,因为我们有很多这种状态,默认情况下我们不想看到它。但是当我们通过过滤器搜索时,我们想跳过这个默认范围并包括 'pending' 状态。如何做到这一点?
我的模型:
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
您需要在管理文件中添加 :all
范围。然后您可以通过过滤器进行搜索,该过滤器将 包含 :all
范围 下的 pending
状态。如果您需要加速加载所有记录,您可以在 :all
范围内提供 show_count: false
。
ActiveAdmin.register MyModel do
...
scope :published, default: true
scope :all # scope :all, show_count: false
...
end