Ruby Activerecord IN子句

Bla*_*ite 66 ruby activerecord

我想知道是否有人知道如何在activerecord中执行"IN"子句.不幸的是,"IN"条款几乎是不可谷歌的,所以我必须在这里发布.基本上我想回答这样一个问题"给我这些宿舍id在这个阵列中的所有大学生[id array]".我知道如何在给出一个单独的宿舍ID的情况下编写查询,但我不知道如何在给定一组id的情况下执行此操作.

任何帮助是极大的赞赏.我确定这是某个问题的重新发布,所以一旦找到答案/更好的搜索词,我就会删除它.

Che*_*rot 134

§2.3.3Rails指南的子集条件:

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

Client.where(:orders_count => [1,3,5])
Run Code Online (Sandbox Code Playgroud)

此代码将生成如下SQL:

SELECT * FROM clients WHERE (clients.orders_count IN (1,3,5))
Run Code Online (Sandbox Code Playgroud)

您还可以使用arel语法:

Client.where(Client.arel_table[:order_count].in([1,3,5]))
Run Code Online (Sandbox Code Playgroud)

将生成相同的SQL

  • 值得注意的是空数组存在的问题. (2认同)