Sha256: 1bb9ae0d6d1104d92dfabb3d2ce76e7e8568ff3d5a3561d63349a9cfefb7fbd7

Contents?: true

Size: 1.81 KB

Versions: 28

Compression:

Stored size: 1.81 KB

Contents

require 'rails/generators'
require 'rails/generators/migration'
require 'active_record'
require 'rails/generators/active_record'

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

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

      # Implement the required interface for Rails::Generators::Migration.
      def self.next_migration_number(dirname) #:nodoc:
        next_migration_number = current_migration_number(dirname) + 1
        if ActiveRecord::Base.timestamped_migrations
          [Time.now.utc.strftime("%Y%m%d%H%M%S"), "%.14d" % next_migration_number].max
        else
          "%.3d" % next_migration_number
        end
      end

      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::Adapters::ActiveRecord::Audit.reset_column_information
        columns = Audited::Adapters::ActiveRecord::Audit.columns.map(&:name)

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

        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?( '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
      end
    end
  end
end

Version data entries

28 entries across 28 versions & 4 rubygems

Version Path
notifiably_audited-activerecord-2.1.0 lib/generators/audited/upgrade_generator.rb
notifiably_audited-activerecord-2.0.0 lib/generators/audited/upgrade_generator.rb
audited-activerecord-4.0.0.rc1 lib/generators/audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.10 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.9 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.8 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.7 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.6 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.5 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.4 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.3 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.2 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.1 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-1.0.0 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-0.1.15 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-0.1.14 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-0.1.12 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-0.1.11 lib/generators/notifiably_audited/upgrade_generator.rb
notifiably_audited-activerecord-0.0.7 lib/generators/audited/upgrade_generator.rb
notifiably_audited-0.0.6 lib/generators/audited/upgrade_generator.rb