Rails删除数字验证的百分比符号

时间:2016-05-03 21:43:34

标签: ruby-on-rails ruby

我试图验证一个号码但是通过jquery在界面上添加了%符号

=> '10.4%'

因此,当我尝试验证数字时,它表示它不是数字

有一种方法来验证这个吗?

我已尝试在我的模型中执行此操作

 before_validation :convert_number

 private

 def convert_number
   self.number.to_f
 end

但它仍然抛出验证错误,它不是数字

4 个答案:

答案 0 :(得分:2)

问题可能是问题的数字类型不是十进制。

 before_validation :convert_number

 private

 def convert_number
   self.number = number.to_d
 end

答案 1 :(得分:0)

如果您无法从表单数据中删除%符号,我建议将字符串强制转换为浮点数。

字符串看起来像Ruby的数字,强调,在这种情况下,可以很好地工作。

这样做时,请确保将新值分配给属性,如下所示:

def convert_number
  self.number = self.number.to_f
end

只需在当前convert_number中按照您的方式强制属性,就不会分配强制值。

我可能会建议编写一个测试,以确保它适用于您希望从表单中获得的值范围。

答案 2 :(得分:0)

您可以修剪百分比并将其转换为具有before_validation的浮点数。问题是,由于您传递的是字符串,因此在实际验证之前,您必须转换为数字或浮动。 http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html

答案 3 :(得分:0)

我认为你展示了这个语法:

before_validation :convert_number
private
def convert_number
  self.number = self.number.chop
end