Sha256: 36e787e41ec883e63bbaa1a0ce272fc06bf8d3e364e67a0616a65e6bea62521a

Contents?: true

Size: 1.1 KB

Versions: 2

Compression:

Stored size: 1.1 KB

Contents

require 'active_record/schema_dumper'

class ActiveRecord::SchemaDumper
  def foreign_keys_with_default_name(table, stream)
    if (foreign_keys = @connection.foreign_keys(table)).any?
      add_foreign_key_statements = foreign_keys.map do |foreign_key|
        parts = [
          "add_foreign_key #{remove_prefix_and_suffix(foreign_key.from_table).inspect}",
          remove_prefix_and_suffix(foreign_key.to_table).inspect,
        ]

        if foreign_key.column != @connection.foreign_key_column_for(foreign_key.to_table)
          parts << "column: #{foreign_key.column.inspect}"
        end

        if foreign_key.custom_primary_key?
          parts << "primary_key: #{foreign_key.primary_key.inspect}"
        end

        parts << "name: #{foreign_key.name.inspect}"

        parts << "on_update: #{foreign_key.on_update.inspect}" if foreign_key.on_update
        parts << "on_delete: #{foreign_key.on_delete.inspect}" if foreign_key.on_delete

        "  #{parts.join(', ')}"
      end

      stream.puts add_foreign_key_statements.sort.join("\n")
    end
  end
  alias_method_chain :foreign_keys, :default_name
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
ridgepole-0.6.4.beta5 lib/ridgepole/ext/schema_dumper.rb
ridgepole-0.6.4.beta4 lib/ridgepole/ext/schema_dumper.rb