Datamapper不接受正则表达式

时间:2012-09-13 22:39:08

标签: ruby-on-rails ruby regex sinatra datamapper

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

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

它正从params中拯救出来:

b.price = params[:price]

但是当我尝试保存时,我的格式错误仍然无效。我用rubular检查了我的正则表达式,似乎工作正常。任何人都知道出了什么问题?

1 个答案:

答案 0 :(得分: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。我觉得应该有更好的方式...