【Rails】複数のhas_many :throughがあるときのデータの取り出し

has_many :throughの関係が複数あるときの取り出しについて。

今は

  • UserとDriverがFavoriteで関連付け
  • UserとDriverがHistoryで関連付け

されている状態になっていて、このとき

fav_drivers = current_user.drivers

とかでFavoriteの関連付けなのかHistoryの関連付けなのか明示することができなくなってしまう。(どうやらモデルで後に関係を宣言したほうが適用されるみたい)

このときのデータの取り出し方。Favoriteの方を例にとってやる。以下のような感じに。

# 全ての関連を取り出す
favorites = Favorite.all
# お気に入り登録したドライバーを格納する配列を初期化
fav_drivers = []
# ループして全ての対応するidのドライバーを取り出す
favorites.each do |fav|
  fav_drivers << Driver.find(fav.driver_id)
end

Historyのときも同じ要領でやればいいなー。簡単な処理だけど!何か他に良い方法があるのかもしれない。