Sha256: 104ba6d7aea7a9ced8b7c8a7d27d949b7d7f0499fbe06d0b9cac1c0e143b5e26

Contents?: true

Size: 1.95 KB

Versions: 3

Compression:

Stored size: 1.95 KB

Contents

require 'rails/generators'
require 'rails/generators/migration'
require 'active_record'
require 'rails/generators/active_record'
require 'generators/audited/migration'
require 'generators/audited/migration_helper'

module Audited
  module Generators
    class UpgradeGenerator < Rails::Generators::Base
      include Rails::Generators::Migration
      include Audited::Generators::MigrationHelper
      extend Audited::Generators::Migration

      source_root File.expand_path("../templates", __FILE__)

      def copy_templates
        migrations_to_be_applied do |m|
          migration_template "#{m}.rb", "db/migrate/#{m}.rb"
        end
      end

      private

      def migrations_to_be_applied
        Audited::Audit.reset_column_information
        columns = Audited::Audit.columns.map(&:name)
        indexes = Audited::Audit.connection.indexes(Audited::Audit.table_name)

        yield :add_comment_to_audits unless columns.include?('comment')

        if columns.include?('changes')
          yield :rename_changes_to_audited_changes
        end

        unless columns.include?('remote_address')
          yield :add_remote_address_to_audits
        end

        unless columns.include?('request_uuid')
          yield :add_request_uuid_to_audits
        end

        unless columns.include?('association_id')
          if columns.include?('auditable_parent_id')
            yield :rename_parent_to_association
          else
            unless columns.include?('associated_id')
              yield :add_association_to_audits
            end
          end
        end

        if columns.include?('association_id')
          yield :rename_association_to_associated
        end

        if indexes.any? { |i| i.columns == %w[associated_id associated_type] }
          yield :revert_polymorphic_indexes_order
        end

        if indexes.any? { |i| i.columns == %w[auditable_type auditable_id] }
          yield :add_version_to_auditable_index
        end
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
audited-4.10.0 lib/generators/audited/upgrade_generator.rb
audited-4.9.0 lib/generators/audited/upgrade_generator.rb
audited-4.8.0 lib/generators/audited/upgrade_generator.rb