我试图验证一个号码但是通过jquery在界面上添加了%符号
=> '10.4%'
因此,当我尝试验证数字时,它表示它不是数字
有一种方法来验证这个吗?
我已尝试在我的模型中执行此操作
before_validation :convert_number
private
def convert_number
self.number.to_f
end
但它仍然抛出验证错误,它不是数字
答案 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