Rails - 如何基于布尔字段进行搜索?(MySQL错误)

ssc*_*rus 11 activerecord ruby-on-rails ruby-on-rails-3

我正在运行以下查询

@projects = @company.projects.where("active = ?", true).order("created_at ASC")
Run Code Online (Sandbox Code Playgroud)

我收到错误:

`ActiveRecord::StatementInvalid: Mysql::ParseError: You have an error in your SQL...`
Run Code Online (Sandbox Code Playgroud)

错误指向= '1'.

我在我的查询上尝试了很多变化,但我无法弄清楚问题.我怎么解决这个问题?

Cal*_*lin 29

尝试:

@projects = @company.projects.where(:active =>  true)
Run Code Online (Sandbox Code Playgroud)

(它也适用于字符串'active').

您还可以查看 http://guides.rubyonrails.org/active_record_querying.html#hash-conditions 以获取更多详细信息.

还有一个关于这个的很好的railscast解释了为什么你可能有问题(我不允许发布2个链接所以你应该搜索它:))


Jac*_*kin 8

您不需要对文字使用参数化查询,只需执行以下操作:

@projects = @company.projects.where("active = 1").order("created_at ASC")
Run Code Online (Sandbox Code Playgroud)

  • 雅各布,我接受的延迟是因为我暂时停止了一个反复出现的SQL错误,结果是因为我没有指定以下内容:`where("project.active = 1")`.此代码删除SQL中的ambiguation错误. (2认同)