#ruby-on-rails #ruby #activeadmin
Вопрос:
Я пытаюсь добавить условное отображение пакетного действия ActiveAdmin :уничтожить по умолчанию, чтобы опция отображалась только в зависимости от роли пользователя. Проблема в том, что добавление if
свойства в batch_action
вызов метода, по-видимому, отключает поведение по умолчанию и вместо этого полагается на блок. Например:
batch_action :destroy, if: proc { authorization_logic_here }
правильно показывает/скрывает пакетное действие в зависимости от роли пользователя, но если действие отображается, оно ничего не делает. Я могу предоставить блок с инструкциями о том, как обрабатывать запрос на уничтожение, но я бы предпочел не изобретать колесо каждый раз, когда мне это нужно. Есть ли способ указать batch_action
вызову на условное отображение, но в противном случае использовать поведение по умолчанию для :destroy
действия?
Ответ №1:
Я не думаю, что это возможно. Вам придется осуществить разрушение самостоятельно. Вот пример:
batch_action :destroy, confirm: 'Beware', if: proc { true } do |ids|
q = resource_class.where(id: ids).map(amp;:destroy)
redirect_to collection_path, notice: "#{q.count} destroyed"
end