Sha256: c2d04f8f0715da7b66a6ef09f9d5c8b9337cb0c0137feae961e4c17a71427068

Contents?: true

Size: 883 Bytes

Versions: 2

Compression:

Stored size: 883 Bytes

Contents

class ForeignKeyMigrationGenerator < Rails::Generator::NamedBase
  def initialize(runtime_args, runtime_options = {})
    runtime_args << 'create_foreign_keys' if runtime_args.empty?
    super
  end

  def manifest
    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

    record do |m|
      m.migration_template 'migration.rb', 'db/migrate', :assigns => {
        :migration_name => class_name, :foreign_keys => foreign_keys
      }, :migration_file_name => file_name
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
automatic_foreign_key-1.0.1 generators/foreign_key_migration/foreign_key_migration_generator.rb
automatic_foreign_key-1.0.0 generators/foreign_key_migration/foreign_key_migration_generator.rb