我们的rails 3.1.4 app中的表记录中有一个canceled
列。最初,canceled
在Firefox SQLite管理器中创建为BOOL,这是软件提供的默认类型。在导轨中使用canceled = false
时,false
已保存到col canceled
的记录表中。问题是当使用Record.where("canceled = ?", false)
进行查询时,未选择canceled
为false
的记录,因为false
在sqlite3中未被解释为FALSE。为了选择所有canceled
= false,我们必须Record.where("canceled =? OR canceled =?", false, 'false')
。
我们在SQLite管理器中手动将canceled
的数据类型从BOOL更改为'boolean'后,Record.where("canceled =? ", false)
可以使用canceled
作为f
获取新创建的记录}。在SQLite管理器中,那些canceled
值表示为f
,由rails解释为FALSE。
如何修复表记录(canceled
为'false')以便Record.where("canceled =? ", false)
可以正常工作?非常感谢。
更新:在rails控制台中查询表记录时,canceled
不表现为布尔值(true或false)。 false
或canceled
无法接收列Record.where("canceled =?", true)
中Record.where("canceled =?", false)
的所有记录。但是在canceled
中返回的.class在rails控制台中仍然是FalseClass
。奇怪,不是吗?
答案 0 :(得分:2)
UPDATE my_table
SET canceled = true -- or 1 check the table
WHERE canceled = 'true'
UPDATE my_table
SET canceled = false
WHERE canceled = 'false'
修改强>
试试这个
my_model.update_all( {:canceled => true}, {:canceled => 'true'} )
my_model.update_all( {:canceled => false}, {:canceled => 'false'} )