Rails 4.x如何使用activerecord查询布尔值?

fun*_*dry 3 activerecord boolean where-clause ruby-on-rails-4

我对我的模型"特权"做了一个布尔"猜测",我试图让所有有猜测的客户得到真实.

我的第一个猜测是:

@customer = Customer.includes(:perks).where('perks.guessed = true')
Run Code Online (Sandbox Code Playgroud)

但这给了我一个SQL异常:"没有这样的列:true"

一些谷歌搜索给了我这个线程:Rails - 如何基于布尔字段进行搜索?(MySQL错误)

所以我尝试过:

@customer = Customer.includes(:perks).where('perks.guessed = 1')
Run Code Online (Sandbox Code Playgroud)

没运气...

还尝试过:

@customer = Customer.includes(:perks).where('perks.guessed LIKE, ?', 'true')

@customer = Customer.includes(:perks).where('perks.guessed = t')
Run Code Online (Sandbox Code Playgroud)

使用activerecord中的where-statement查询布尔值的正确方法是什么?

我在dev和Postgres上使用SQLite来生产btw.

Pav*_*van 8

这应该工作

@customer = Customer.includes(:perks).where('perks.guessed = ?', true)
Run Code Online (Sandbox Code Playgroud)

要么

看看你的一个查询

这个 @customer = Customer.includes(:perks).where('perks.guessed = t')

应该

@customer = Customer.includes(:perks).where("perks.guessed = 't'")
Run Code Online (Sandbox Code Playgroud)