Rails - 查询将负十进制值视为正数

时间:2015-09-01 23:49:39

标签: ruby-on-rails

我有一个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

看着这一点,似乎它将所有数字视为积极的。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:5)

你做不到:

where(:end_balance > :start_balance)

相反,你必须做类似的事情:

where("end_balance > start_balance")

Ruby立即评估第一个:

2.1.2 :001 > :end_balance > :start_balance
=> false

而第二个作为条件传递给您的数据库。