空白の値で 'eq' 述語を使用すると、Ransack はその述語を取り消します。選択に「すべて」オプションがあると明らかに便利です。
しかし、null 値にもオプション<select>
を追加したい場合はどうすればよいでしょうか? SELECT * FROM spree_orders WHERE order_cycle_id = NULL
つまり、「eq」述語を使用して SQL クエリを生成する方法です。
私のテストコード(結果付き)は以下の通りです。私が望むのは、Order
s whereを除外することですorder_cycle_id == nil
Spree::Order.search(order_cycle_id_eq: nil).result.map(&:order_cycle_id)
Spree::Order Load (2.2ms) SELECT "spree_orders".* FROM "spree_orders"
=> [nil, 1, nil, nil, nil, nil, nil, nil, 1, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, nil, 4, nil, 4, nil, nil, nil, nil]
2 番目のオプションは、選択に追加したいものです。「null」、「nil」などを試しましたnil
。
<select id="q_order_cycle_id_eq" name="q[order_cycle_id_eq]">
<option value="">All</option>
<option value="nil">No Order Cycle</option>
<option value="1">Order Cycle 1</option>
<option value="2">Order Cycle 2</option>
</select>