Ruby on rails 检查字符串在ruby中是否为有效数字

Ruby on rails 检查字符串在ruby中是否为有效数字,ruby-on-rails,ruby,validation,parameters,Ruby On Rails,Ruby,Validation,Parameters,我想检查天气变量是否包含有效数字 我可以正确验证null和blank,但无法验证文本是否为整数 我试过: if(params[:paramA].blank? || (params[:paramA].is_a?(Integer)) ) 我也试过是数字,是数字字符串,是数字?还有其他方式。。。 但是没有成功…我看到了这样的补丁: class String def is_number? true if Float(self) rescue false end end if (par

我想检查天气变量是否包含有效数字

我可以正确验证null和blank,但无法验证文本是否为整数

我试过:

if(params[:paramA].blank? || (params[:paramA].is_a?(Integer)) )
我也试过是数字,是数字字符串,是数字?还有其他方式。。。 但是没有成功…

我看到了这样的补丁:

class String
  def is_number?
    true if Float(self) rescue false
  end
end

if (params[:paramA].blank? || !params[:paramA].is_number?)
或者没有补丁:

if (params[:paramA].blank? || (false if Float(params[:paramA]) rescue true))

它支持12、-12、12.12、1e-3等等。

如果您的参数用于ActiveRecord模型,那么您可能应该使用validates\u numericability\u of。否则

你只想要整数,对吗?那么:

if (params[:paramA].blank? || params[:paramA] !~ /^[+-]?\d+$/)

也就是说,检查参数是否由可选的+或-,后跟1个或更多数字,而不是其他数字组成。

如果要执行以下操作:

I want to check weather variable contains a valid number or not.
你可以用正则表达式得到它。看到了吗

在rails中,您可以使用数字?方法对字符串、整数或浮点进行处理,这正好满足您的需要

123.numeric?
# => true
123.45.numeric?
# => true
"123".numeric?
# => true
"123.45".numeric?
# => true
"a1213".numeric?
# => false
更新


糟糕的是,我的环境很脏,如果加载了mongoid版本3及更高版本,则上述操作有效。

验证了activerecord的数值性。是否为?Numeric=>false`阅读本文:感谢您的快速回答。。。但是我犯了这个错误。。。awe:String的未定义方法“is_number”。。。注意:'awe'->是我的输入为什么他不直接使用正则表达式而不是所有的猴子补丁?在细节中他说…包含一个有效的数字或者不是0,0和1是有效的数字?不是吗好吧,如果他的意思是你所说的,那么你是对的:谢谢你耐心地告诉我;检查以验证RRY的数值性,但当我的输入为“asdf”时会出现异常。。。。异常:asdf:StringIt的未定义方法'numeric'。它会给您一个错误,因为他的答案不是ruby的一部分。另外,你想要的答案是
123.numeric?
# => true
123.45.numeric?
# => true
"123".numeric?
# => true
"123.45".numeric?
# => true
"a1213".numeric?
# => false