回答編集履歴

2

追記

2020/09/20 21:30

投稿

winterboum
winterboum

スコア23349

test CHANGED
@@ -23,3 +23,9 @@
23
23
  `で選ぶ
24
24
 
25
25
  ただしこの方法ですと、ページングを行うのが厄介になります
26
+
27
+
28
+
29
+ 及び、
30
+
31
+ schoolの結果が Array になりリレーションではなくなるので、この後リレーションとしての使い方はできません

1

追記

2020/09/20 21:30

投稿

winterboum
winterboum

スコア23349

test CHANGED
@@ -1,3 +1,25 @@
1
1
  all ですか? or の間違いでは?
2
2
 
3
3
  allですと「全てに該当する」ですから。
4
+
5
+
6
+
7
+ 追記
8
+
9
+ もしかしたらSQLの達人が回答くれるかもと待ってましたが無いようなので、、、
10
+
11
+
12
+
13
+ 私の力ですと一回で選び出す方法は思いつきません。
14
+
15
+ まず _or で 片方しかないものも含んだ schools を得、
16
+
17
+ そのあとで
18
+
19
+ `tag_ids = params[:q]からidのlistを得る
20
+
21
+ schools.select{|school| (school.tags.map(&:id) & tag_ids)==tag_ids}
22
+
23
+ `で選ぶ
24
+
25
+ ただしこの方法ですと、ページングを行うのが厄介になります