module Foreigner::SchemaDumper::ClassMethods

Public Instance Methods

dump_foreign_key(foreign_key) click to toggle source
# File lib/foreigner/schema_dumper.rb, line 10
def dump_foreign_key(foreign_key)
  statement_parts = [ ('add_foreign_key ' + remove_prefix_and_suffix(foreign_key.from_table).inspect) ]
  statement_parts << remove_prefix_and_suffix(foreign_key.to_table).inspect
  statement_parts << (':name => ' + foreign_key.options[:name].inspect)

  if foreign_key.options[:column] != "#{remove_prefix_and_suffix(foreign_key.to_table).singularize}_id"
    statement_parts << (':column => ' + foreign_key.options[:column].inspect)
  end
  if foreign_key.options[:primary_key] != 'id'
    statement_parts << (':primary_key => ' + foreign_key.options[:primary_key].inspect)
  end
  if foreign_key.options[:dependent].present?
    statement_parts << (':dependent => ' + foreign_key.options[:dependent].inspect)
  end

  statement_parts.join(', ')
end
remove_prefix_and_suffix(table) click to toggle source
# File lib/foreigner/schema_dumper.rb, line 28
def remove_prefix_and_suffix(table)
  table.gsub(%r^(#{ActiveRecord::Base.table_name_prefix})(.+)(#{ActiveRecord::Base.table_name_suffix})$/,  "\\2")
end