Ruby Activerecord IN子句


73

我想知道是否有人知道如何在activerecord中执行“ IN”子句。不幸的是,“ IN”子句几乎不可谷歌搜索,所以我必须在这里发布。基本上,我想回答这样一个问题:“给我所有这些宿舍中的大学生,这些宿舍的id都在此数组[id array]中。” 我知道在给定单个宿舍ID的情况下如何编写查询,但在给定ID数组的情况下我不知道如何执行查询。

任何帮助是极大的赞赏。我确定这是某处问题的转发,因此一旦找到答案/更好的搜索字词,我将删除该问题。

Answers:


145

从第2.3.3节“ Rails指南的子集条件”开始

如果要使用IN表达式查找记录,可以将数组传递给条件哈希:

Client.where(:orders_count => [1,3,5])

这段代码将生成如下的SQL:

SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5))

您还可以使用arel语法:

Client.where(Client.arel_table[:order_count].in([1,3,5]))

将生成相同的SQL


2
可能值得注意的是空数组存在的问题。
tokland 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.