如何验证数值的小数?

Mel*_*lon 4 ruby-on-rails ruby-on-rails-3

我在模型中的验证如下:

validates_numericality_of :shoe_size, :message=>'Please input a number'
Run Code Online (Sandbox Code Playgroud)

但这还不够,因为用户可以输入一些像"42.22222222121212121212 ..."这样的值,这是不可取的.那么,如何验证输入只有两个小数,如42.22

War*_*ren 6

你可以试试这个:

validates_format_of :shoe_size, :with => /^\d+\.*\d{0,2}$/
Run Code Online (Sandbox Code Playgroud)


Bit*_*oet 0

为什么不在收到输入后对其进行处理呢?在我看来,你应该自己将其四舍五入到小数点后两位,而不是让用户担心这一点。

Rails 提供round_with_ precision,因此只需在浮点上调用 .round(2) 即可将其四舍五入到小数点后两位。