首先非常感谢@Tom Lord,它帮助我解决了我的问题,这就是解决方案:
- 首先在您的
app/controllers/admin/application_controller.rb
生成中覆盖Administrate
如下:
module Admin
class ApplicationController < Administrate::ApplicationController
...
def index
search_term = params[:search].to_s.strip
resources = Administrate::Search.new(scoped_resource,
dashboard_class,
search_term).run
resources = resources.includes(*resource_includes) if resource_includes.any?
resources = order.apply(resources)
resources = resources.page(params[:page]).per(records_per_page)
resources = finder_chain_additions(resources)
page = Administrate::Page::Collection.new(dashboard, order: order)
render locals: {
resources: resources,
search_term: search_term,
page: page,
show_search_bar: show_search_bar?
}
end
private
def scoped_resource
begin
# Provide resource with deleted_at field generate with Paranoia
resource_class.unscoped
rescue
# Used for models whose don't have Paranoia field
resource_class
end
end
def finder_chain_additions resources
begin
resources.with_deleted
rescue
resources
end
end
end
end
- 在你的
app/dashboards/foo_dashboard.rb
require "administrate/base_dashboard"
class ArticleDashboard < Administrate::BaseDashboard
# ATTRIBUTE_TYPES
# a hash that describes the type of each of the model's fields.
#
# Each different type represents an Administrate::Field object,
# which determines how the attribute is displayed
# on pages throughout the dashboard.
ATTRIBUTE_TYPES = {
id: Field::Number,
...
created_at: Field::DateTime,
updated_at: Field::DateTime,
deleted_at: Field::DateTime,
}.freeze
# COLLECTION_ATTRIBUTES
# an array of attributes that will be displayed on the model's index page.
#
# By default, it's limited to four items to reduce clutter on index pages.
# Feel free to add, remove, or rearrange items.
COLLECTION_ATTRIBUTES = [
:id,
...
:deleted_at,
:hide,
].freeze
# SHOW_PAGE_ATTRIBUTES
# an array of attributes that will be displayed on the model's show page.
SHOW_PAGE_ATTRIBUTES = [
:id,
...
:deleted_at,
:created_at,
:updated_at,
].freeze
# FORM_ATTRIBUTES
# an array of attributes that will be displayed
# on the model's form (`new` and `edit`) pages.
FORM_ATTRIBUTES = [
...
:deleted_at,
].freeze
# Overwrite this method to customize how articles are displayed
# across all pages of the admin dashboard.
#
# def display_resource(article)
# "Article ##{article.id}"
# end
end
当然,更改deleted_at
字段取决于您可能为添加偏执狂宝石所做的迁移。