Sha256: 3165a812b8ef18790e78ccbfd41644c4c4704c20c2e39cb7add595eab78cccc3

Contents?: true

Size: 1.11 KB

Versions: 5

Compression:

Stored size: 1.11 KB

Contents

require 'generators/active_record'
require 'active_record'

module AutomaticForeignKey
  class MigrationGenerator < ::ActiveRecord::Generators::Base
    argument :name, :default => 'create_automatic_foreign_keys'

    def self.source_root
      File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
    end

    def create_migration_file
      set_local_assigns!
      migration_template 'migration.rb', "db/migrate/#{file_name}"
    end

    protected
    attr_reader :foreign_keys

    def set_local_assigns!
      @foreign_keys = determine_foreign_keys
    end

    def determine_foreign_keys
      returning [] do |foreign_keys| 
        connection = ::ActiveRecord::Base.connection
        connection.tables.each do |table_name|
          connection.columns(table_name).each do |column|
            references = ::ActiveRecord::Base.references(table_name, column.name)
            foreign_keys << ::RedHillConsulting::Core::ActiveRecord::ConnectionAdapters::ForeignKeyDefinition.new(nil, table_name, column.name, references.first, references.last) if references
          end
        end
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
automatic_foreign_key-1.1.6 lib/generators/automatic_foreign_key/migration_generator.rb
automatic_foreign_key-1.1.5 lib/generators/automatic_foreign_key/migration_generator.rb
automatic_foreign_key-1.1.0 lib/generators/automatic_foreign_key/migration_generator.rb
automatic_foreign_key-1.0.5 lib/generators/automatic_foreign_key/migration_generator.rb
automatic_foreign_key-1.0.2 lib/generators/automatic_foreign_key/migration_generator.rb