为什么Rails where子句不返回带有布尔条件的结果?

时间:2012-06-15 10:48:46

标签: ruby-on-rails sqlite squeel

我有以下squeel查询:

i = Invoice.where{ paid == true }

它与:

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

并执行:

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

但是,此查询根本不会返回任何发票。如果我尝试从我的sqlite程序ether执行查询,它不起作用,似乎该查询是错误的。我绝对相信sqlite数据库中有发票都有'#39;和' f'作为价值。如何做到这一点?

2 个答案:

答案 0 :(得分:1)

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

i = Invoice.where{ paid == 1 }

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

更新:

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

祝你好运!

答案 1 :(得分:-2)

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

 i = Invoice.where(paid: true)  # corrected from using braces to parenthesis