Sha256: bb0bb75b72ee2367eef059d4ca9d947b0a00d5ee627cb81463275322da382801

Contents?: true

Size: 1.82 KB

Versions: 3

Compression:

Stored size: 1.82 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
      end
    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
audited-4.7.1 lib/generators/audited/upgrade_generator.rb
audited-4.7.0 lib/generators/audited/upgrade_generator.rb
audited-4.6.0 lib/generators/audited/upgrade_generator.rb