使用rails 3验证号码

时间:2014-04-07 22:18:49

标签: ruby-on-rails ruby-on-rails-3

如何验证文本字段中的输入是否为数字? not_integer不是我要找的。它可以是十进制数。

2 个答案:

答案 0 :(得分:4)

您可以查看numericality

validates :points, numericality: true

如果您想要更通用的方法,可以使用is_a?。 Ruby中的父编号类是Numeric

a = 4
a.is_a? Numeric
=> true

b = 5.4
b.is_a? Numeric?
=> true

c = "apple"
c.is_a? Numeric
=> false

d = "4"
d.is_a? Numeric
=> false

答案 1 :(得分:1)

限制用户在表单级别输入非数字值,并避免昂贵的服务器调用以检查数值。

以下列形式使用:

<%= f.number_field :attribute_name, :step => 'any' %>

这将创建一个html元素,如下所示:

<input id="post_attribute_name" name="post[attribute_name]" step="any" type="number">

提交表单后,将在表单级别检查输入值。 step = "any"将允许小数。

我还建议使用

在模型级别添加验证
validates :attribute_name, numericality: true  ## As suggested by Justin Wood

通过这种方式,您可以获得双重保护,即一个位于表单级别,另一个位于模型级别。