Method: Convergence::Table#foreign_key

Defined in:
lib/convergence/table.rb

#foreign_key(key_columns, options = {}) ⇒ Object



29
30
31
32
33
34
35
36
37
38
39
40
41
# File 'lib/convergence/table.rb', line 29

def foreign_key(key_columns, options = {})
  if options[:reference].nil? || options[:reference_column].nil?
    fail ArgumentError.new("#{@table_name} - #{key_columns}: require reference/reference_column parameters")
  end
  key_name = options[:name]
  key_name = "#{table_name}_#{[key_columns].flatten.join('_')}_fk" if key_name.nil?
  @foreign_keys[key_name] = Convergence::ForeignKey.new(
    key_name,
    key_columns,
    options[:reference],
    [options[:reference_column]].flatten,
    options.reject { |k, _v| k == :reference || k == :reference_column })
end