0

在我们的 rails 3.1.4 应用程序中,表记录中有一个canceled列。最初canceled在 Firefox SQLite 管理器中创建为 BOOL,这是软件提供的默认类型。在canceled = falserails 中,false被保存到 col 的记录表中canceled​​。问题是使用 查询时,未选择带有asRecord.where("canceled = ?", false)的记录,因为在 sqlite3 中未将其解释为 FALSE。为了选择 all = false,我们必须这样做。canceledfalsefalsecanceledRecord.where("canceled =? OR canceled =?", false, 'false')

在我们在 SQLite 管理器中手动将数据类型canceled从 BOOL 更改为 'boolean' 后,可以使用asRecord.where("canceled =? ", false)获取新创建的记录。在 SQLite 管理器中,这些值表示为被 rails 解释为 FALSE。canceledfcanceledf

如何修复表记录(使用 'false' 表示canceled)以便Record.where("canceled =? ", false)有效?非常感谢。

更新:在 rails 控制台中查询表记录时,canceled不表现为布尔值(真或假)。所有带有falsein 列的记录都不能被或canceled拾取。但是返回的 .class仍然在 rails 控制台中。奇怪,不是吗?Record.where("canceled =?", true)Record.where("canceled =?", false)canceledFalseClass

4

1 回答 1

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'} )
于 2012-07-13T18:15:33.293 回答