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