ActiveRecord where field =?可能值的数组

qua*_*ato 64 ruby-on-rails rails-activerecord

我想要做

Model.where('id = ?', [array of values])
Run Code Online (Sandbox Code Playgroud)

如何在不将OR语句链接在一起的情况下完成此查找?

Wil*_*son 134

这里开始,似乎是使用SQL in语句完成的:

Model.where('id IN (?)', [array of values])
Run Code Online (Sandbox Code Playgroud)

或者更简单地说,正如kdeisz指出的那样(使用Arel来创建SQL查询):

Model.where(id: [array of values])
Run Code Online (Sandbox Code Playgroud)

  • 这可以简化为`Model.where(id:[数组的数组])` (4认同)

mes*_*jah 18

来自ActiveRecord查询界面指南

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

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


Sel*_*ish 6

为了便于阅读,可以进一步简化,以便:

Model.find_by(id: [array of values])
Run Code Online (Sandbox Code Playgroud)

这相当于使用where,但更明确:

Model.where(id: [array of values])
Run Code Online (Sandbox Code Playgroud)