我有一个Transaction模型,其中包含:start_balance和end_balance,两者都是十进制字段。开始余额大于期末余额的交易是收费和付款相反的结果。
我有这个查询只查找end_balance大于start_balance(付款)的交易
.sectionbar
这两个字段通常都包含负值。这看起来很简单,但有趣的是,当我运行此查询时,它会将所有记录视为正面。例如,以下代码:
class Transaction < ActiveRecord::Base
def self.payments
where(:end_balance > :start_balance)
end
end
产生
Transaction.payments.first(10).each do |t|
puts t.start_balance.to_s + " start"
puts t.end_balance.to_s + " end"
end
看着这一点,似乎它将所有数字视为积极的。我在这里错过了什么吗?
答案 0 :(得分:5)
你做不到:
where(:end_balance > :start_balance)
相反,你必须做类似的事情:
where("end_balance > start_balance")
Ruby立即评估第一个:
2.1.2 :001 > :end_balance > :start_balance
=> false
而第二个作为条件传递给您的数据库。