method
add_reference
v5.0.0.1 -
Show latest stable
- Class:
ActiveRecord::ConnectionAdapters::SchemaStatements
add_reference(table_name, *args)public
Adds a reference. The reference column is an integer by default, the :type option can be used to specify a different type. Optionally adds a _type column, if :polymorphic option is provided. #add_reference and #add_belongs_to are acceptable.
The options hash can include the following keys:
- :type
-
The reference column type. Defaults to :integer.
- :index
-
Add an appropriate index. Defaults to false. See #add_index for usage of this option.
- :foreign_key
-
Add an appropriate foreign key constraint. Defaults to false.
- :polymorphic
-
Whether an additional _type column should be added. Defaults to false.
- :null
-
Whether the column allows nulls. Defaults to true.
Create a user_id integer column
add_reference(:products, :user)
Create a user_id string column
add_reference(:products, :user, type: :string)
Create supplier_id, supplier_type columns and appropriate index
add_reference(:products, :supplier, polymorphic: true, index: true)
Create a supplier_id column with a unique index
add_reference(:products, :supplier, index: { unique: true })
Create a supplier_id column with a named index
add_reference(:products, :supplier, index: { name: "my_supplier_index" })
Create a supplier_id column and appropriate foreign key
add_reference(:products, :supplier, foreign_key: true)
Create a supplier_id column and a foreign key to the firms table
add_reference(:products, :supplier, foreign_key: {to_table: :firms})
1Note
foreign_key option
It is also possible to specify that +add_foreign_key+ should be added to the schema: add_reference(:products, :supplier, foreign_key: true)