質問編集履歴
3
タイトルを変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
[Rails]
|
1
|
+
[Rails] N+1問題と子要素条件検索の両立ができない
|
body
CHANGED
File without changes
|
2
テーブル修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -35,7 +35,6 @@
|
|
35
35
|
|
36
36
|
eager_loadでJOINする
|
37
37
|
↓
|
38
|
-
|
39
38
|
projects.id|project_tags.tag_id|
|
40
39
|
|:--|:--:|
|
41
40
|
|1|1|
|
@@ -46,9 +45,13 @@
|
|
46
45
|
|2|2|
|
47
46
|
|2|3|
|
48
47
|
|2|4|
|
48
|
+
|3|4|
|
49
|
+
|3|5|
|
50
|
+
|3|6|
|
49
51
|
|
50
|
-
WHERE project_tags.tag_id IN [1,2,3]で絞り込み
|
51
52
|
↓
|
53
|
+
tag_id: [1,2,3]で絞り込み
|
54
|
+
↓
|
52
55
|
|
53
56
|
|
54
57
|
projects.id|project_tags.tag_id|
|
@@ -59,6 +62,7 @@
|
|
59
62
|
|2|2|
|
60
63
|
|2|3|
|
61
64
|
|
65
|
+
|
62
66
|
→ Project:1は4番・5番、Project: 2は4番のタグが消えているためビューで全てタグが表示されない
|
63
67
|
|
64
68
|
### 該当のソースコード
|
1
WHEREで絞る前の結合済みのテーブルを追加 & 順番をわかりやすくした
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
2
|
Ruby On Rails 5で社内のみで使う業務管理システムを作成中。
|
3
3
|
プロジェクトごとにタグが複数ついていて、タグと案件番号と顧客会社名によるプロジェクト検索機能を作りたい。
|
4
|
-
######検索機能の詳細
|
5
|
-
案件番号は前方一致、顧客会社名は部分一致、タグは1,2,3を選択した場合タグIDとして1,2,3のいずれかを含む案件がヒット
|
6
4
|
######テーブルは下記(質問に関係ない情報は省略)
|
7
5
|
1←多(矢印の向きがbelongs_to)
|
8
6
|
projects → clients
|
@@ -26,6 +24,10 @@
|
|
26
24
|
id(PK)
|
27
25
|
name
|
28
26
|
|
27
|
+
######検索機能の詳細
|
28
|
+
案件番号は前方一致、顧客会社名は部分一致、タグは1,2,3を選択した場合タグIDとして1,2,3のいずれかを含む案件がヒット
|
29
|
+
|
30
|
+
|
29
31
|
### 発生している問題の例
|
30
32
|

|
31
33
|
赤は検索フォームで選択されたtag_id
|
@@ -33,9 +35,22 @@
|
|
33
35
|
|
34
36
|
eager_loadでJOINする
|
35
37
|
↓
|
38
|
+
|
39
|
+
projects.id|project_tags.tag_id|
|
40
|
+
|:--|:--:|
|
41
|
+
|1|1|
|
42
|
+
|1|2|
|
43
|
+
|1|3|
|
44
|
+
|1|4|
|
45
|
+
|1|5|
|
46
|
+
|2|2|
|
47
|
+
|2|3|
|
48
|
+
|2|4|
|
49
|
+
|
36
50
|
WHERE project_tags.tag_id IN [1,2,3]で絞り込み
|
37
51
|
↓
|
38
52
|
|
53
|
+
|
39
54
|
projects.id|project_tags.tag_id|
|
40
55
|
|:--|:--:|
|
41
56
|
|1|1|
|
@@ -44,7 +59,7 @@
|
|
44
59
|
|2|2|
|
45
60
|
|2|3|
|
46
61
|
|
47
|
-
→ Project:1
|
62
|
+
→ Project:1は4番・5番、Project: 2は4番のタグが消えているためビューで全てタグが表示されない
|
48
63
|
|
49
64
|
### 該当のソースコード
|
50
65
|
※注意:なぜindexではなくallなのか
|