使用偏执狂和管理的轨道,有没有办法为用户获取管理员的已删除记录



我想通过管理员在管理面板上通过偏执狂更改所有已删除的记录。我的问题是我正在寻找一种方法来做这些事情,但直到现在还没有成功

实际上,我正在尝试做的是覆盖使用Administrate生成的特定控制器上的索引方法,以便将所有元素(删除或未删除(作为当前控制器的资源。这样:

controllers/admin/foo_controller.rb

module Admin
  class FooController < Admin::ApplicationController
    super
    resources = Foo.where("at_delete IS NOT NULL").page(params[:page])
  end
end

但是当我从管理面板创建一个 foo 对象并删除它时。该记录不再显示,我想让它仍然可见,以便管理员可以更改它。

如果有人有意见使这成为可能,那就太好了。

提前感谢您的帮助。

首先非常感谢

@Tom主,它帮助我解决了我的问题,这就是解决方案:

  1. 首先,在您的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
  1. 在你的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字段取决于您为添加偏执狂宝石而可能进行的迁移。

相关内容

  • 没有找到相关文章

最新更新