CCCPaste

custom task batch actions

    def add_custom_task_batch_actions
      batch_action(
        :execute_custom_task,
        form: -> {
          tasks = CustomTask.where("? = ANY(input_record_types)", resource_class.name)
          {
            custom_task_id: tasks.map { |t| [t.name, t.id] }
          }
        }) do |ids, inputs|
        custom_task = CustomTask.find(inputs[:custom_task_id])
        background_job = CustomTaskWorker.perform_async(
          custom_task.id,
          resource_class.name,
          ids,
          name: custom_task.name,
          custom_task_id: custom_task.id
        )

        redirect_to(
          admin_background_job_path(background_job),
          notice: "Your custom task is being executed in the background."
        )
      end
    end