Rails にテーブルを含むレポートがあり、ユーザーは必要に応じて、場所の選択や日付の範囲の選択などのフィルターを設定し、ajax 要求を介してテーブルを更新できます。
任意の日付/空白またはすべての場所になるように、この where 句を記述できますか?
@orders = Order.where('created_at <= ? AND ? <= created_at AND location_id = ?', date_order_start, date_order_end, loc_filter)
上記のクエリは空白 ("" など) で失敗し、nil を入力すると SQL で null に変換されます。
現在この問題を解決するために、ajax リクエストに値が存在するかどうかを確認し、ケースに応じて異なる where 句を作成する一連の条件ステートメントがあります。私の現在の条件は扱いにくく、エラーが発生しやすく、スケーラブルではありません。
「wildcard sql」などを検索すると、テキスト検索 (つまり、%) に行き着きますが、これはこの場合には当てはまらないと思います。
postgresql を使用して Rails 3.2 を実行しています。