2015-12-17 33 views
0

我正在使用老版本的rails 3.2。该列是string,我需要验证该值是<= 0.1。从documentation状态“默认情况下,它将匹配一个可选符号,后跟一个整数或浮点数”。值大于0.1

validates :min_amount, numericality: { greater_than_or_equal_to: 0.1 }

但即使我提出0.5它说,这是不是0.1

+2

为什么列中输入字符串类型? –

+0

你的问题是它是一个字符串类型。字符串类型将针对浮点评估为零。您需要创建一个将其转换为浮点的lambda,然后进行比较。 –

+0

@Jordan这是一个很好的问题。这个应用程序有一些严重的问题,我们正试图解决后,将其接管。这是一个又一个的巨大头痛。 – covard

回答

1

试试这个,应该转换值自动浮动:

validates :min_amount, numericality: { greater_than_or_equal_to: 0.1, only_float: true } 
+0

看起来像这样仍然会抛出相同的错误'*最小数量必须大于或等于0.1' – covard

+1

没关系,这是因为之前的开发人员(谁不知道他在做什么,并不知道他在做什么)添加了一个'parse_as_integers'到这个属性。如果他的模型不是384行,看起来会更容易。 – covard

0

不大于或等于将字符串转换为浮点十进制与to_f。或者让列自身成为浮点。