LoginSignup
49
36

More than 3 years have passed since last update.

アソシエーションにおけるclass_nameの定義!

Posted at

こんにちは!

アソシエーションを利用してく中で、たくさんのオプションがあることを知ったので今回はその中でも、class_nameについて触れていきたいと思います!

class_nameオプションとは?

関連を設定するモデルクラス名を指定します!
利用場面としては、関連名と参照先のクラス名を異なるものにしたい場合に指定します!

実際のコードを見ながら、説明していきます!

model/tweet.rb
class Tweet < ActiveRecord::Base

belongs_to :user
has_many :comments

end

上記のTweetモデルには、Userモデルの関係が定義されているのが確認できます。
したがって、@tweet.userのような形で、@tweetに紐づいたuserレコードを取得することができます!

アソシエーションのメソッド名とクラス名が一致しているときはそれで問題ありませんが、メソッド名を変えたいこともあります...

そんな時に、class_nameオプションが活躍します!

model/tweet.rb
class Tweet < ActiveRecord::Base

belongs_to :owner, class_name: 'User'
has_many :comments

end

上記のように記述することで、@tweet.ownerのような形で、@tweetに紐づいたuserレコードを取得することができます!


以上となります!

他にお気付きの点などありましたら、コメントお願いします!

ご静聴ありがとうございました!:relaxed:

49
36
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
49
36