Specifying column name in a "references" migration
In Rails 4.2+ you can also set foreign keys in the db as well, which is a great idea.
For simple associations this can be done also on t.references
adding foreign_key: true
, but in this case you'll need two lines.
# The migration
add_reference :posts, :author, index: true
add_foreign_key :posts, :users, column: :author_id
# The model
belongs_to :author, class_name: "User"
For Rails 5+
Initial Definition:
If you are defining your Post
model table, you can set references
, index
and foreign_key
in one line:
t.references :author, index: true, foreign_key: { to_table: :users }
Update Existing:
If you are adding references to an existing table, you can do this:
add_reference :posts, :author, foreign_key: { to_table: :users }
Note: The default value for index
is true.