1. is-lab

    No comment

    is-lab
Changes in body
Source | HTML | Preview
@@ -1,42 +1,44 @@
###筆者環境
MacOSX 10.9.2
端末:MacBookPro
Homebrew 0.9.5
Ruby 2.1.0
Rails 4.0.3
普段、solorの全文検索を使っていますが、スコープを書いてみたので、活用してみてください。
## 検索条件
1.前後トリムしたい。
  例:「 テスト 」 => 「テスト」
2.スペースで値をor検索したい。
  例:「鈴木 イチロー」 => 「鈴木とイチローを検索条件にしたい。」
+
```Terminal
scope :searchstring, ->(search_string){
tokens = search_string.split(' ').map { |c| "%#{c.downcase}%" }
if tokens.present?
users = users.where((['( name like ? )']*tokens.size).join(' AND '),
*tokens.map { |token| [token] * 1 }.flatten)
end
users
}
```
+
```Terminal
User. searchstring("鈴木 イチロー").to_sql
=>
SELECT `users`.* FROM `users ` WHERE `users `.`deleted_at` IS NULL AND (( name like '%鈴木%' ) AND ( name like '%イチロー%' ))
User. searchstring("鈴 イチロー 木").to_sql
=>
SELECT `users`.* FROM `users ` WHERE `users `.`deleted_at` IS NULL AND (( name like '%鈴%' ) AND ( name like '%イチロー%' ) AND ( name like '%木%' ))
```
のように半角スペースで繋げた分だけLIKE検索が出来るscopeの完成!
全角スペースで繋げた場合の対策はしていないので、詳しい解説とか希望あれば書きます。