概要
モデルの関連付けで foreign_key
が必要となるケースについてまとめました。
foreign_keyが必要となるケース
前提として、Railsの規約を理解していきましょう。
Rails は CoC を設計思想として取り入れているため、基本的には以下のようなDB設計をするようにしてください。
- RailsのActiveRecordはデフォルトで外部キーを
<関連モデル>_id
(例:user_id
)として期待する
それを踏まえて、以下のようなケースで、foreign_key
が必要となります。
- モデルで期待する外部キー名が、実際のデータベースのカラム名と異なる場合
- 例:
Post
モデルでUser
モデルと関連付く外部キーにauthor_id
を使用する場合
サンプルコード
class User < ApplicationRecord
has_many :posts, foreign_key: :author_id, dependent: :destroy
end
class Post < ApplicationRecord
belongs_to :user, foreign_key: :author_id
end
参照元テーブルと、参照先テーブルで foreign_key
の指定が必要になります。
まとめ
以上です。
どなたかの参考になれば幸いです。