Ransack允许我使用属性,谓词和值构建条件。我无法找到有关如何将一个属性与另一个属性进行比较的任何文档。例如,我如何为以下内容创建条件:
WHERE column_a < column_b
答案 0 :(得分:2)
我一直在使用Ransack很长一段时间,但我认为没有任何可能做你正在寻找的东西。你想要的是一个“case - &gt; when”语句,它可以在Rails中生成,也可以在ActiveRecord中生成。
Ransack使您能够通过定义属性,谓词和值来创建自定义SQL命令,然后将其转换为您已提到的WHERE语句。我认为没有任何可能直接告诉Ransack过滤你想要的东西。但是:
你可以创建一个范围,如:
scope :column_b_gt_columnb_a, -> { where('column_b > column_a') }
然后你就可以建立你的搜索:
Object({ column_b_gt_columnb_a: true })
可能不是你真正想要的,但我认为这是你会得到的最好的......
如果你想用Rails做,你可以比较值或使用上面我用过的where语句。
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
有关SQL语句的示例,请单击此处
How do I compare two columns for equality in SQL Server?
希望这有点帮助!