小数点以下の桁のビジネスモデルがあります。その値は0.00と999.99の間でなければなりません。だから私は小数点フィールドを作成し、モデルにバリデーションを追加しました。私が1000より大きいか0未満の小数値でOrderオブジェクトを作成するとRuby on Rails Decimalプロパティの検証
class Order < ApplicationRecord
validates :price, format: { with: /\A\d+(?:\.\d{0,2})?\z/ }, numericality: { greater_than: 0, less_than: 1000 }
end
、私は私が期待されるエラーを取得し、それは大丈夫です。 「数値:{greater_than:0、less_than:1000}」の検証が期待通りに機能することがわかります。
小数点以下の桁数が45.45554または45.45666のOrderオブジェクトを作成しようとすると、railsはそのオブジェクトを価格値45.45で保持します。フォーマットエラーが発生すると予想していますが、 フォーマットの検証は機能しません。
私は間違っていますか?
提案、
ありがとう。
Yeap、priceの精度は2です。私には精度がないと仮定すると、フォーマットの検証が必要です。しかし、いずれにせよ、それは動作しません。 –
私はあなたの精度を向上させるでしょう、もしあなたが小数点以下を一定量必要としたいと思ったら、それは別の話ですが、私はあなたのユースケースを理解していません。 – at0misk