このクエリを検索フォームに使用できて本当によかったです。しかし、それが正しく機能していないことがわかりました。失敗したビットは、.where
whichlike
に対してparams[:query]
です。これlike
は、4 つの異なるフィールドに対して 4 回発生します。しかし、結果は、これが起こっていないことを示しています。
@events_casual = Event.non_timetable.where("events.finish_date >= ?", @time).where((["CAST(headers.title_es as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_en as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_eu as varchar(255)) LIKE ?", "%#{params[:query]}%"] || ["CAST(headers.title_fr as varchar(255)) LIKE ?", "%#{params[:query]}%"])).includes(:header).order("events.start_date ASC")
私はこのクエリを次のように変換しようとしています:
@events_casual = Event.non_timetable.joins(:header).where(" params[:query] in (?)", [headers.title_es, headers.title_en, headers.title_eu]).order("events.start_date ASC")
しかし、これはうまくいきません。Error: undefined method
{}:Hash` の title_es'
同様の構文を試しました。しかし、役に立たない。
そのクエリを書き直す助けは大歓迎です。ありがとう