実現したいこと
ruby 2.6.5
rails 6.0.3
閲覧いただきありがとうございます。
railsでwebアプリを作成しています。
複数のテーブルを結合した後に、each内でひとつひとつの要素に対して、再度eachを重ねる方法について、ご教示いただければ幸いです。
詳細
下記テーブルの中から、そのユーザーに関連するタスクと、そのタスクに関連する情報(解決策とその解決策を持っている企業名)を取得して、配列の中のハッシュにいれたい。
そのようにして作った配列をerb内でeachを用いて、ひとまとまりずつ出力したい。
(タスクをeachで回して、なおかつ、そのタスクに紐づく企業名などをeachで出力する方法がわかりませんでした)
イメージ
mike のタスク「タスク1」に適している解決策 ・ 企業名:Dcompany 解決策:「solution2」 ・ 企業名:Ccompany 解決策:「solution3」 mike のタスク「タスク2」に適している解決策 ・ 企業名:Acompany 解決策:「solution1」
テーブル
usersテーブル
id | name |
---|---|
1 | mike |
2 | bob |
tasksテーブル
id | task_name | user_id |
---|---|---|
1 | タスク1 | 1 |
2 | タスク2 | 1 |
3 | タスク3 | 2 |
recommendsテーブル
id | task_id | solution_id |
---|---|---|
1 | 1 | 2 |
2 | 1 | 3 |
3 | 2 | 1 |
solutionsテーブル
id | solution_name | company_id |
---|---|---|
1 | solution1 | 1 |
2 | solution2 | 4 |
3 | solution3 | 3 |
companiesテーブル
id | name |
---|---|
1 | Acompany |
2 | Bcompany |
3 | Ccompany |
4 | Dcompany |
試したこと
まず、以下のようにテーブルを結合し、欲しいデータは一つのテーブルとして、結合することができました。
しかし、ここからどのようにデータの抽出及びeachで回すのかが、わからず断念しました。
tasks = user.eager_load(:tasks) tasks = tasks.eager_load(:recommends) tasks = tasks.eager_load(recommends: :solutions) tasks = tasks.eager_load(recommends: {solutions: :companies })
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。