首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当参数采用数组时,Rails使用ActiveRecord "where“

当参数采用数组时,Rails使用ActiveRecord "where“
EN

Stack Overflow用户
提问于 2014-08-21 23:34:57
回答 2查看 4.3K关注 0票数 6

我正在尝试使用使用activeRecord的rails "where“查询。我的查询包含多个条件,其中一个条件是数组:

代码语言:javascript
复制
User.where("state = ? AND salary >= ?", ["AL", "MI", "MA"], 1000)

问题是,当我运行它(无论是从控制器,还是从控制台),我没有任何错误,但什么看起来像一个空的ActiveRecord对象。如果数组中只有一个值,它就可以正常工作。它的多个值(我知道是存在的),它不返回预期的值。

代码语言:javascript
复制
SELECT `users`.* FROM `users` WHERE (salary >= 1000 AND state = "AL", "MI","MA")

我可以使用散列,但我不知道如何在查询中获得这方面的所有条件。我可以这样做:

代码语言:javascript
复制
User.where(state: ["AL", "MI", "MA"])

这是可行的,但不确定如何在那里有工资>=的条件。有人能告诉我我做错了什么,以及如何解决吗?

EN

Stack Overflow用户

回答已采纳

发布于 2014-08-22 00:23:55

我更愿意使用Mark的解决方案,但要使您的最初尝试奏效,您必须将state = ?更改为state IN (?),如下所示:

代码语言:javascript
复制
User.where("state IN (?) AND salary >= ?", ["AL", "MI", "MA"], 1000)

这将生成一个WHERE ... IN ('...', '...')查询,这是传递数组时所需的。

使用哈希的优点是Rails自动生成正确的SQL。传递字符串或数组确实很重要。

票数 7
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25437524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档