在一个使用SQLite3的Rails应用程序中,我想在具有浮点属性的模型中使用浮点值
有没有办法解决这个问题,还是我需要在模型/数据库中使用字符串?Rails版本为3.2.21,SQLite3版本为1.3.10。编辑:目前我已经在数据库迁移中将列类型更改为“string”并使用。
Float :: INFINITY
和- Float :: INFINITY
。使用Model.create!
运行INSERT
查询时,这似乎可以正常工作,因为在这种情况下activerecord使用预处理语句。但是,当我尝试使用foo.save
更新记录时,activerecord不使用预处理语句,而是直接将字符串 Infinity
放入查询中,导致以下结果:SQLite3::SQLException: no such column: Infinity
有没有办法解决这个问题,还是我需要在模型/数据库中使用字符串?Rails版本为3.2.21,SQLite3版本为1.3.10。编辑:目前我已经在数据库迁移中将列类型更改为“string”并使用。
serialize :property, Float
为了让ActiveRecord能够将YAML序列化的浮点数存储在数据库中,可以顺利地存储Float::INFINITY
。
1.0/0
被定义为Float::INFINITY
。将属性设置为9e999
会导致变量被设置为Float::INFINITY
,因此我得到了相同的 SQLite3 错误。 - ChristophFloat::MAX
吗?我刚刚发现这个方法,知道在 Ruby 中比这个数字更大的数字都等于无穷大。 - Jason Adrian Bargas