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に対する関連を複数持つ場合
    • 例えば、自己参照関連で親と子の関連を持つなど