instance method
references
Ruby on Rails 4.2.9
Since v2.2.3Signature
references(*args)
Adds a reference.
t.references(:user) t.belongs_to(:supplier, foreign_key: true)
See SchemaStatements#add_reference for details of the options you can use.
Parameters
-
argsrest
Source
# File activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb, line 312
def references(*args)
options = args.extract_options!
polymorphic = options.delete(:polymorphic)
index_options = options.delete(:index)
foreign_key_options = options.delete(:foreign_key)
type = options.delete(:type) || :integer
if polymorphic && foreign_key_options
raise ArgumentError, "Cannot add a foreign key on a polymorphic relation"
end
args.each do |col|
column("#{col}_id", type, options)
column("#{col}_type", :string, polymorphic.is_a?(Hash) ? polymorphic : options) if polymorphic
index(polymorphic ? %w(type id).map { |t| "#{col}_#{t}" } : "#{col}_id", index_options.is_a?(Hash) ? index_options : {}) if index_options
if foreign_key_options
to_table = Base.pluralize_table_names ? col.to_s.pluralize : col.to_s
foreign_key(to_table, foreign_key_options.is_a?(Hash) ? foreign_key_options : {})
end
end
end
Defined in activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb line 312
· View on GitHub
· Improve this page
· Find usages on GitHub
Defined in ActiveRecord::ConnectionAdapters::TableDefinition