Module: Foreigner::SchemaDumper::ClassMethods

Defined in:
lib/foreigner/schema_dumper.rb

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.remove_prefix_and_suffix(table_name) ⇒ Object



31
32
33
34
35
36
37
38
39
# File 'lib/foreigner/schema_dumper.rb', line 31

def remove_prefix_and_suffix(table_name)
  table_name = table_name.to_s
  pre, suff = ActiveRecord::Base.table_name_prefix, ActiveRecord::Base.table_name_suffix
  if table_name.start_with?(pre) && table_name.end_with?(suff)
    table_name[pre.size..-(suff.size + 1)]
  else
    table_name
  end
end

Instance Method Details

#dump_foreign_key(foreign_key) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# 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
  if foreign_key.options[:options].present?
    statement_parts << ('options: ' + foreign_key.options[:options].inspect)
  end

  statement_parts.join(', ')
end