mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Merge pull request #28289 from maicher/master
Improve foreign key description in guides
This commit is contained in:
commit
355a2fcfe9
1 changed files with 18 additions and 2 deletions
|
@ -582,14 +582,30 @@ class CreateBooks < ActiveRecord::Migration[5.0]
|
|||
t.string :book_number
|
||||
t.integer :author_id
|
||||
end
|
||||
|
||||
add_index :books, :author_id
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
If you create an association some time after you build the underlying model, you need to remember to create an `add_column` migration to provide the necessary foreign key.
|
||||
|
||||
It's a good practice to add an index on the foreign key to improve queries
|
||||
performance and a foreign key constraint to ensure referential data integrity:
|
||||
|
||||
```ruby
|
||||
class CreateBooks < ActiveRecord::Migration[5.0]
|
||||
def change
|
||||
create_table :books do |t|
|
||||
t.datetime :published_at
|
||||
t.string :book_number
|
||||
t.integer :author_id
|
||||
end
|
||||
|
||||
add_index :books, :author_id
|
||||
add_foreign_key :books, :authors
|
||||
end
|
||||
end
|
||||
```
|
||||
|
||||
#### Creating Join Tables for `has_and_belongs_to_many` Associations
|
||||
|
||||
If you create a `has_and_belongs_to_many` association, you need to explicitly create the joining table. Unless the name of the join table is explicitly specified by using the `:join_table` option, Active Record creates the name by using the lexical book of the class names. So a join between author and book models will give the default join table name of "authors_books" because "a" outranks "b" in lexical ordering.
|
||||
|
|
Loading…
Reference in a new issue