Rails 多対多 の表示について

多対多の関係をviewに表示するときに、悩んだ経験を持つ人も多いよね。

最初は階層や関連について理解していないからきついよね。

この記事を読めば理解できると思うよ。

頑張っていこう。 わからなければコメント下さい。 随時加えていくね。

これがわかれば多対多の関係を表示するのにたいへん役立つ。

@reviews = Group.find(params[:id]).users.map(&:reviews).flatten

Groupとusersは多対多の関係

さらにuserはreviewsを1対多の関係で持っている。

usersを取得した時点で複数持っている。
よって配列処理のmap関数を利用している

mapの説明はこちら

ref.xaio.jp

ここで取得した配列は、階層化しているはず
なぜならusersを取得した時点で、複数取得している。
更にusersには多数のreviewが紐付いている
だから階層が生じている
それを修正するのがflattern

flattenはこちら

ref.xaio.jp