LoginSignup
2
0

More than 3 years have passed since last update.

[Rails]アソシエーションでのclass_name

Posted at
1 / 2

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レコードを取得することができます。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0