0

我有以下 squeel 查询:

i = Invoice.where{ paid == true }

这与以下内容相同:

i = Invoice.where ['paid = ?', true]

并执行:

SELECT "invoices".* FROM "invoices" WHERE "invoices"."paid" = 't'

但是,此查询根本不返回任何发票。如果我尝试从我的 sqlite 程序 ether 执行查询,它不起作用,似乎该查询是错误的。我绝对确定在 sqlite db 中有发票,'t' 和 'f' 作为价值。如何做到这一点?

4

2 回答 2

1

SQLite 没有单独的布尔存储类。相反,布尔值存储为整数 0(假)和 1(真)。试试这个:

i = Invoice.where{ paid == 1 }

另见:http ://www.sqlite.org/datatype3.html

更新:

我在这里找到了一个很好的解释你的困境。请参阅Rails 3 SQLite3 Boolean false

祝你好运!

于 2012-06-15T12:03:23.620 回答
-2

我相信正确的语法应该是:

 i = Invoice.where(paid: true)  # corrected from using braces to parenthesis
于 2012-06-15T12:00:21.077 回答