実現したいこと
ruby 2.6.5
rails 6.0.3
閲覧いただきありがとうございます。
railsでwebアプリを作成しています。
複数のテーブルからほしいカラムのデータのみを抽出して、一つの配列にまとめたのちに、eachで出力する方法について、ご教示いただければ幸いです。
詳細
下記テーブルの中から、関連するusers.nameとcompanies.company_nameとtasks.task_nameを抜き出して、ひとまとまりとして、配列に入れていきたい。
そのようにして作った配列をerb内でeachを用いて、ひとまとまりずつ出力したい。
イメージ
・佐藤 Acompany task3 ・山田 Dcompany task12 ・武田 Bcompany task8 ・田中 Ccompany task97
テーブル
usersテーブル
id | name | sex | company_id |
---|---|---|---|
1 | 佐藤 | 女 | 1 |
2 | 山田 | 女 | 4 |
3 | 武田 | 女 | 2 |
4 | 田中 | 女 | 3 |
companiesテーブル
id | company_name | industry_1 | industry_2 |
---|---|---|---|
1 | Acompany | 3 | 9 |
2 | Bcompany | 6 | 10 |
3 | Ccompany | 1 | 3 |
4 | Dcompany | 4 | 8 |
tasksテーブル
id | task_name | company_id |
---|---|---|
1 | task3 | 1 |
2 | task12 | 4 |
3 | task97 | 3 |
4 | task8 | 2 |
試したこと
以下のように、配列に各要素を詰めるのでは?と思い試していましたが、これで実装できるイメージが持てず断念しました。
user_name = [] users.each do |user| user_name << user.name end
想定のデータが取得できるSQLは書いてみましたか?
「関連する」ならモデルでhas~で親子を繋げは勝手に取ってこれそうには思いますが、それぞれどのような定義になっているのでしょうか。
@m.ts10806 ありがとうございます。リレーションはそれぞれのモデルに、has_many,belongs_toを使って記述しています。ただ今回は、全てのカラムをつなげるのでなくて、必要なカラムに絞りたかったです。
「カラム」なら表示するときに欲しいカラムだけ使えば良いと思うのですが、そういうことではなく?
select * from hoge
ではなく
select id,name,mail from hoge
というのがしたいのかどうかです。
回答1件
あなたの回答
tips
プレビュー