こんにちは!
アソシエーションを利用してく中で、たくさんのオプションがあることを知ったので今回はその中でも、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レコードを取得することができます!
以上となります!
他にお気付きの点などありましたら、コメントお願いします!
ご静聴ありがとうございました!