## 要点 Active Recordのマイグレーションファイルにて`t.references`または`add_reference`を使う際、 `foreign_key:`オプションに対して`true`の代わりに **ハッシュを渡すことで外部キー制約の詳細を設定** できます。 このハッシュで指定できるオプションは[add_foreign_keyのAPIドキュメント](https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_foreign_key)に記載されているオプションです。 ## 具体例 ### `t.references` を使う場合(新規テーブル作成時) ```ruby create_table :books do |t| t.references :author, foreign_key: { on_delete: :cascade } end ``` ### `add_reference` を使う場合(既存テーブルへの追加) ```ruby add_reference :books, :author, foreign_key: { on_delete: :cascade } ``` ## 説明 Active Recordのマイグレーションファイルにてテーブル間に関連付けをする際には、 `t.references`または`add_reference`を使うと便利です。 この2つのメソッドは、呼び出すときに`foreign_key:`オプションを付けると、 外部キー制約も同時に付与することが出来ます。例えば、`foreign_key: true`という記述をよく見かけます。 `foreign_key: true`は外部キー制約をかけることだけの指定となりますが、 ここでの`true`の代わりにハッシュを渡すことで、外部キー制約の詳細が設定可能になります。 このハッシュの中に入れられるオプション、つまり外部キー制約の詳細設定項目は、`add_foreign_key`に渡せるオプションと同じです。 このadd_foreign_keyに渡せるオプションの具体的な種類とそれぞれの意味については、 [add_foreign_keyのAPIドキュメント](https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/SchemaStatements.html#method-i-add_foreign_key)をご覧ください。