where子句的Rails语法

时间:2013-04-30 17:09:24

标签: ruby-on-rails

如何在Rails中编写where子句来测试多个值?

这不起作用:

where("wostatus_id = ?", 231 or 230 or 8466 )

还需要这样的语法:

where("wostatus_id != ?", 231 and 230 and 8466 )

感谢您的帮助!

2 个答案:

答案 0 :(得分:4)

你可以这样做......

where("wostatus_id IN (?)", [231, 230, 8466])

where("wostatus_id NOT IN (?)", [231, 230, 8466])

答案 1 :(得分:2)

您可以使用正常的hash condition

Model.where(wostatus_id: [230, 231, 8466])

这将产生预期的“IN”查询。在Rails 3中,没有办法将其转换为“NOT IN”,因此您需要使用where("wostatus_id NOT IN (?)", [230, 231, 8466])方法。

在Rails 4中,您应该可以:

Model.where.not(wostatus_id: [230, 231, 8466])

另请参阅:How to express a NOT IN query with ActiveRecord/Rails?