Sto usando Ransack per un bel po ', ma non vedo alcuna possibilità di fare ciò che si sta cercando. Quello che vuoi è una frase "case -> when", che può essere prodotta in Rails o come SQL con ActiveRecord.
Ransack ti dà la possibilità di creare un comando SQL personalizzato, definendo attributo, predicato e valore, che poi si traduce in WHERE Statement che hai già menzionato. Non vedo alcuna possibilità di dire direttamente a Ransack di filtrare per quello che vuoi. Tuttavia:
Che cosa si potrebbe è creare un ambito come:
scope :column_b_gt_columnb_a, -> { where('column_b > column_a') }
E poi si può costruire la vostra ricerca come questa:
Object({ column_b_gt_columnb_a: true })
Probabilmente non è davvero quello che cercavi, ma penso questo è il massimo che si ottiene ...
E se si desidera farlo con Rails, si farebbe per confrontare i valori o usare detta dichiarazione in cui ho usato sopra.
Records.each do |i|
case i.variable_a
when i.variable_b
# do something when it's the same
when i.variable_a > i.variable_b
# do something when it's greater
end
end
Per un esempio di un'istruzione SQL un'occhiata qui
How do I compare two columns for equality in SQL Server?
Spero che questo aiuti un po '!
Quindi vuoi entrambi gli attributi column_a e column_b. Non come 'Person.search ({id_eq: 1}, {name_object:: abcd}). Result.to_sql' – Sontya