0

data_mapper gemを使用してdbに送信されているsinatraアプリのフォームフィールドを検証するために正規表現を使用しています。モデルのフィールドに使用しているコードは次のとおりです。

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

そして、それはparamsから保存されています:

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 に答える