Как мне удалить опцию «удалить» для администраторов, использующих activeadmin?

#ruby-on-rails #activeadmin

#ruby-on-rails #activeadmin

Вопрос:

Я пытаюсь понять, почему я не могу удалить опцию «удалить» для администраторов, использующих active admin.

В прошлом я пытался удалить кнопку администратора, но после запуска сервера никаких изменений не вносилось.

Я добавил следующую строку, это избавляет от 1 кнопки удаления. Однако есть 2, которые необходимо удалить.

Пример использования кнопки удаления:https://www.rubydoc.info/gems/active_admin_sidebar/0.0.4

   config.remove_action_item(:destroy)
  

После исследования и нахождения этого кода это также не сработало.

 link_to I18n.t('active_admin.delete'), admin_resource_path(resource), method: :delete, data: { confirm: I18n.t('active_admin.delete_confirmation') }, class: "delete_link" if resource.deletable?
  
 ActiveAdmin.register AdminUser do
  config.remove_action_item(:destroy)

  permit_params :email, :password, :password_confirmation


  index do
    selectable_column
    id_column
    column :email
    column :current_sign_in_at
    column :sign_in_count
    column :created_at
    actions
  end

  filter :email
  filter :current_sign_in_at
  filter :sign_in_count
  filter :created_at

  form do |f|
    f.inputs do
      f.input :email
      f.input :password
      f.input :password_confirmation
    end
    f.actions
  end

end
`````````````````````````````````````````````````````````````````````````````
  

Ответ №1:

Если вы хотите пропустить действие «уничтожить» в кнопках, у вас есть два способа:

  1. Передать список разрешенных действий:
 index do
  selectable_column
  id_column
  # ... other columns
  actions :index, :show, :new, :create, :update, :edit
end
  
  1. Используйте except ключ для actions метода для передачи запрещенных действий:
 index do
  selectable_column
  id_column
  # ... other columns
  actions :all, except: :destroy
end
  

Или вы можете отключить :destroy действие для каждой страницы для ресурса:

 ActiveAdmin.register AdminUser do
  actions :all, :except => :destroy
end
  

Или вы можете очистить все действия для ресурса:

 ActiveAdmin.register AdminUser do
  config.clear_action_items!

  # After this you can go ahead and define custom 
  # action items as you please
end
  

Источники:

  1. https://activeadmin.info/2-resource-customization.html

  2. https://github.com/activeadmin/activeadmin/issues/341

  3. https://github.com/activeadmin/activeadmin/issues/760