2012-09-13 81 views
0

我正在使用正則表達式來驗證我的sinatra應用程序中使用data_mapper gem發送到我的數據庫的表單字段。我用在我的模型中場的代碼是:Datamapper不接受正則表達式

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

而且它正在從PARAMS保存:

b.price = params[:price] 

我不斷收到一個無效的格式錯誤,當我試圖挽救,但。我檢查了我的正則表達式rubular,它似乎工作正常。任何人都有任何想法發生了什麼問題?

回答

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。我覺得應該有更好的辦法...