6

空白の値で 'eq' 述語を使用すると、Ransack はその述語を取り消します。選択に「すべて」オプションがあると明らかに便利です。

しかし、null 値にもオプション<select>を追加したい場合はどうすればよいでしょうか? SELECT * FROM spree_orders WHERE order_cycle_id = NULLつまり、「eq」述語を使用して SQL クエリを生成する方法です。

私のテストコード(結果付き)は以下の通りです。私が望むのは、Orders 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>
4

1 に答える 1

8

コンソールでこれを試してください:

Spree::Order.search(order_cycle_id_null: true)

HTMLビューセットで、次にコントローラーでランサッククエリを変更します

于 2013-11-06T11:40:10.287 に答える