質問するログイン新規登録

質問編集履歴

3

テーブル構成を追加

2020/10/22 13:48

投稿

yomigi
yomigi

スコア43

title CHANGED
File without changes
body CHANGED
@@ -1,3 +1,46 @@
1
+ - Roomテーブル
2
+
3
+ |ID|name|
4
+ |:--|--:|
5
+ |1|room1|
6
+
7
+
8
+ - Userテーブル
9
+
10
+ |ID|room_id|name|
11
+ |:--|:--:|--:|
12
+ |1|1|ユーザ1|
13
+ |2|1|ユーザ2|
14
+
15
+
16
+ - Postテーブル
17
+
18
+ |ID|room_id|user_id|name|
19
+ |:--|:--:|:--:|--:|
20
+ |1|1|1|post1|
21
+ |2|1|2|post2|
22
+
23
+
24
+ - Commentテーブル
25
+
26
+ |ID|room_id|user_id|post_id|message|
27
+ |:--|:--:|:--:|:--:|--:|
28
+ |1|1|1|1|comment1|
29
+ |2|1|1|1|comment2|
30
+ |3|1|2|2|comment3|
31
+
32
+
33
+ - Assetテーブル
34
+
35
+ |ID|room_id|user_id|post_id|comment_id|asset_type|file_path|
36
+ |:--|:--:|:--:|:--:|:--:|:--:|--:|
37
+ |1|1|1|1|null|image|XXX/YYY|
38
+ |2|1|2|null|null|image|XXX/YYY|
39
+ |3|1|1|1|2|image|XXX/YYY|
40
+ |4|1|2|2|3|image|XXX/YYY|
41
+ |5|1|2|2|3|movie|XXX/YYY|
42
+
43
+
1
44
  ```
2
45
  class Room < ApplicationRecord
3
46
  has_many :users

2

例の中身にミスがあったので修正(Commentモデル=>Assetモデル)

2020/10/22 13:48

投稿

yomigi
yomigi

スコア43

title CHANGED
File without changes
body CHANGED
@@ -40,7 +40,7 @@
40
40
  - Asset(imageとmovieの実体)はUserとPostとCommentに紐づく
41
41
 
42
42
  各モデルには外部キーとして所属するモデルのIDを持っているとさせてください。
43
- 例:Userモデルにはroom_idがあり、Commentモデルにはuser_idとpost_idとcomment_idがある・・という状況
43
+ 例:Userモデルにはroom_idがあり、Assetモデルにはuser_idとpost_idとcomment_idがある・・という状況
44
44
 
45
45
  ここで質問の本題となるのですが、
46
46
  ```

1

追記

2020/10/22 13:08

投稿

yomigi
yomigi

スコア43

title CHANGED
File without changes
body CHANGED
@@ -53,4 +53,9 @@
53
53
  ```
54
54
  room_id = 1 # 一例
55
55
  Room.find_by(id: room_id).users.includes(posts: {comments: [:movies, :images]})
56
- ```
56
+ ```
57
+
58
+ 追記:
59
+ includesで、と書いてしまいましたが、
60
+ 上記内容(少ないSQLで関連テーブルの情報を合わせて取得する)が達成できれば
61
+ どんな方法でも構いません。