我有以下squeel查询:
i = Invoice.where{ paid == true }
它与:
相同i = Invoice.where ['paid = ?', true]
并执行:
SELECT "invoices".* FROM "invoices" WHERE "invoices"."paid" = 't'
但是,此查询根本不会返回任何发票。如果我尝试从我的sqlite程序ether执行查询,它不起作用,似乎该查询是错误的。我绝对相信sqlite数据库中有发票都有'#39;和' f'作为价值。如何做到这一点?
答案 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