class_name 関連先のModelのクラス名を指定する
使用可能な関連付け
belongs_to
has_and_belongs_to_many
has_many
has_one
対となる関連に指定するオプション
なし
概要
関連名と実際のModel名が異なる場合に利用する。
class Author < ApplicationRecord
# テーブルの外部キーは profile_id
belongs_to :profile, class_name: 'AuthorProfile'
end
class AuthorProfile < ApplicationRecord
has_one :author, foreign_key: :profile_id
end
用途
- なんらかの理由でModel名と異なるアソシエーション名をつけたい場合
- Railsが複数形から単数形への変換を間違えてしまうアソシエーション名をつける場合
- 同一のModelに対する関連を複数持つ場合
- 例えば、自己参照関連で親と子の関連を持つなど