我查询了我的Payment
模型。我的amount
列是一个整数。我想从amount
列中消除负整数。我只想用正值显示付款。
Payment.where('amount NOT REGEXP ?', '^-\d+$')
和
Payment.where('amount NOT REGEXP ?', '^-\d*\.?\d+$'
都在Rubular中工作,但在我的Rails应用程序中不起作用。我尝试在控制台中进行匹配,但它也不起作用:
amount.to_i =~ /^-\d*\.?\d+$/
我知道>= 0
条件会起作用,但我想知道为什么它不适用于REGEX
。
答案 0 :(得分:3)
如果你只是想删除负整数,那么这样的东西不会同样有效吗,而且性能更高吗?
Payment.where('amount >= 0')
答案 1 :(得分:0)
我认为你的正则表达式在控制台中运行。
$ irb
irb(main):001:0> /^-\d*\.?\d+$/ =~ "-3"
=> 0
irb(main):002:0> $~
=> #<MatchData "-3">
irb(main):003:0> /^-\d*\.?\d+$/ =~ "-3.1415"
=> 0
irb(main):004:0> $~
=> #<MatchData "-3.1415">
irb(main):005:0> /^-\d*\.?\d+$/ =~ "128"
=> nil
irb(main):006:0>