Railsで検索機能を実装したい
解決したいこと
Rails初学者で、こちらの記事を参考にしながら、検索機能を作成しています。
https://qiita.com/fukmaru/items/c22ba2700e9ad368770c
記事との環境の違いは以下です。
- 記事:PostgreSQL 10.4
- 自分:sqlite3 3.7.17 (cloud9で開発)
Gemfileなどは変更しており、検索機能以前の実装については問題なく動いています。
発生している問題・エラー
検索実行時に、以下のエラーが出てしまいます。
SQLite3::SQLException: near "~": syntax error: SELECT "contents".* FROM "contents" WHERE "contents"."is_published" = ? AND (`body` ~~* any(array['%hoge%']))
該当するソースコード
class PagesController < ApplicationController
def home
@contents = Content.where(is_published: true)
search_params = params.dig("s")
if search_params
search_params_arr = search_params.split
@contents = @contents.where("body ~~* any(array[#{search_params_arr.map{ |i| %Q('%#{i}%') }.join(',')}])") if search_params_arr.present?
end
@search_str = search_params
end
end
自分で試したこと
- @contents.where以下の( )内を "id = 1" に変更すると動いた。@contents.where以下の( )内が怪しいと推測。
- body をバッククォートで囲ってみた(`body`)が、解決せず。
- サンプルコードとの環境の違いが原因かと思い、postgresqlとsqliteの構文の違いなどを調べるが、わからず。
よろしくお願いします。
0