Chr*_*oph 7 ruby sqlite activerecord ruby-on-rails
在使用SQLite3的Rails应用程序中,我想使用float值Float::INFINITY并-Float::INFINITY在具有浮点属性的模型中使用.INSERT使用Model.create!它运行查询似乎工作正常,因为在这种情况下activerecord使用预准备语句.但是,当我尝试使用更新记录时foo.save,activerecord不使用准备好的stament并且只是将字符串Infinity放在查询中,导致
SQLite3::SQLException: no such column: Infinity
Run Code Online (Sandbox Code Playgroud)
有没有办法解决这个问题,还是需要在模型/数据库中使用字符串?
Rails版本3.2.21,SQLite3版本1.3.10
编辑.现在我将列类型更改为string在数据库迁移和使用中
serialize :property, Float
Run Code Online (Sandbox Code Playgroud)
告诉activerecord在数据库中存储YAML序列化的浮点数,允许存储Float::INFINITY就好了.
这是因为Float::INFINITY在rails中被定义为1.0/0,sqlite3不知道如何处理它。您可以使用一个非常大的数字来定义无穷大,例如 9e999 作为要保存到数据库的值的替换
| 归档时间: |
|
| 查看次数: |
697 次 |
| 最近记录: |