回答編集履歴
1
質問文を誤読していて、and条件だったようなので、追記します。
test
CHANGED
@@ -1,3 +1,45 @@
|
|
1
|
+
質問文を誤読していて、and条件だったようなので、追記します。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
これで動くと思います。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
```rb
|
10
|
+
|
11
|
+
scope :search_by_keywords, -> (keywords) {
|
12
|
+
|
13
|
+
all.tap do |q|
|
14
|
+
|
15
|
+
keywords.each {|keyword| q.where!("users.nickname LIKE :keyword", keyword: "%#{sanitize_sql_like(keyword)}%") }
|
16
|
+
|
17
|
+
end
|
18
|
+
|
19
|
+
}
|
20
|
+
|
21
|
+
```
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
scope環境の`self`は`ActiveRecord::Relations`になると思っていたのですが、
|
26
|
+
|
27
|
+
どうやら勘違いでした。
|
28
|
+
|
29
|
+
なので、`#where!`を使うには`#all`で明示的に引っ張り出す必要がありました。
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
|
34
|
+
|
35
|
+
|
36
|
+
|
37
|
+
------
|
38
|
+
|
39
|
+
or条件の場合
|
40
|
+
|
41
|
+
|
42
|
+
|
1
43
|
`search_by_keyword` scopeを複数単語に対応させたいのですね。
|
2
44
|
|
3
45
|
|