0

我正在使用正则表达式来验证我的 sinatra 应用程序中使用 data_mapper gem 发送到我的数据库的表单字段。我在模型中用于该字段的代码是:

property :price, Float, :required => true, :format => /\$?\d{0,3}\.{1}\d{2}/

它正在从参数中保存:

b.price = params[:price]

但是,当我尝试保存时,我不断收到无效的格式错误。我用rubular检查了我的正则表达式,它似乎工作正常。有人知道出了什么问题吗?

4

1 回答 1

0

这并不完美,但这是我目前正在做的解决方案:

property :price, Float, :required => true 
validates_format_of :price, :with => /\$?\d{0,3}(\.{1}\d{2})?/

进而:

c = params[:price]
c[0] == "$" ? b.price = c[1,7] : b.price = c

因此,如果有一个“$”,我只是将数字保存到 b.price 没有它,否则整个事情都会设置为 b.price。我觉得应该有更好的方法...

于 2012-09-14T14:22:23.750 回答