class_nameとは
アソシエーション(Active Recordモデル同士の関連付け)におけるオプションの1つ
例えば、下記のItemモデルには、Userモデルの関係が定義されています。現在は@item.userのような形で、@itemに紐づいたuserを取得することができます。
class Item < ActiveRecord::Base
belongs_to :user
class User < ActiveRecord::Base
has_many :items
使い時は
アソシエーションのメソッド名とクラス名が一致しているときはそれで問題ありませんが、メソッド名を変えたいこともあります。
例えば、userはuserでも買い手(buyer)と売り手(seller)がいた場合です。
そうした時にclass_nameオプションを使用します。
class Item < ActiveRecord::Base
belongs_to :buyer, class_name:"User"
belongs_to :seller, class_name:"User"
上記のようにしてあげることで、@item.buyerや@item.sellerの形で、@itemに紐づいたuserレコードを取得することができます。