【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のときも同じ要領でやればいいなー。簡単な処理だけど!何か他に良い方法があるのかもしれない。