Haw*_*001 6 ruby activerecord ruby-on-rails-3.2
我正在尝试使用 activeRecord 来使用 Rails“where”查询。我的查询包含多个条件,其中之一是数组:
User.where("state = ? AND salary >= ?", ["AL", "MI", "MA"], 1000)
Run Code Online (Sandbox Code Playgroud)
问题是,当我运行它时(无论是从控制器还是从控制台),我没有收到任何错误,但看起来像一个空的 ActiveRecord 对象。如果数组中只有一个值,它就可以正常工作。它的多个值(我知道存在)不会返回预期值。
SELECT `users`.* FROM `users` WHERE (salary >= 1000 AND state = "AL", "MI","MA")
Run Code Online (Sandbox Code Playgroud)
我可以使用哈希来代替,但我不确定如何在这方面获取查询中的所有条件。那,我可以做以下事情:
User.where(state: ["AL", "MI", "MA"])
Run Code Online (Sandbox Code Playgroud)
这可行,但不确定如何在那里设置工资 >= 条件。谁能告诉我我做错了什么以及如何解决它?
我更喜欢使用马克的解决方案,但为了使您最初的尝试发挥作用,您必须更改state = ?为state IN (?),如下所示:
User.where("state IN (?) AND salary >= ?", ["AL", "MI", "MA"], 1000)
Run Code Online (Sandbox Code Playgroud)
这将生成一个WHERE ... IN ('...', '...')查询,这是传递数组时所需的。
使用哈希的优点是 Rails 自动生成正确的 SQL。如果传递字符串或数组,这很重要。
| 归档时间: |
|
| 查看次数: |
4827 次 |
| 最近记录: |