Полное руководство по отключению PaperTrail в администраторе Rails

PaperTrail — это популярный драгоценный камень в экосистеме Ruby on Rails, который обеспечивает функции управления версиями и аудита для моделей ActiveRecord. Однако могут быть сценарии, в которых вы захотите отключить PaperTrail в интерфейсе администратора Rails. В этой статье мы рассмотрим несколько методов с примерами кода для отключения PaperTrail в Rails Admin.

Методы отключения PaperTrail в администраторе Rails:

  1. Метод 1. Удаление конфигурации PaperTrail

    # config/initializers/paper_trail.rb
    PaperTrail.enabled = false
  2. Метод 2: переопределение метода PaperTrail enabled?

    # app/models/your_model.rb
    class YourModel < ApplicationRecord
     def self.paper_trail_enabled_for_controller?
       false
     end
    end
  3. Метод 3. Удаление обратных вызовов PaperTrail

    # app/models/your_model.rb
    class YourModel < ApplicationRecord
     has_paper_trail ignore: [:updated_at, :created_at]
    
     before_save :skip_paper_trail
     before_destroy :skip_paper_trail
    
     private
    
     def skip_paper_trail
       self.paper_trail.enabled = false
     end
    end
  4. Метод 4. Пользовательское действие контроллера

    # app/controllers/admin/your_models_controller.rb
    class Admin::YourModelsController < ApplicationController
     def disable_paper_trail
       PaperTrail.enabled = false
       redirect_to admin_your_models_path
     end
    end
  5. Метод 5. Использование флага функции

    # app/controllers/admin/your_models_controller.rb
    class Admin::YourModelsController < ApplicationController
     def index
       PaperTrail.enabled = false if feature_flag_enabled?(:disable_paper_trail)
       # ...
     end
    end

Отключить PaperTrail в Rails Admin можно различными способами в зависимости от ваших конкретных требований. В этой статье обсуждались пять различных методов, каждый из которых имеет собственный пример кода. Используя любой из этих методов, вы можете эффективно отключить PaperTrail в интерфейсе администратора Rails.