Active Record查询具有多个选项的“where”

时间:2013-02-24 22:41:28

标签: ruby-on-rails ruby ruby-on-rails-3 activerecord

我有这个查询,如果可能的话我想减少:

@orders_in_progress = user.orders.where("state = ? OR state = ? OR state = ?, "Waiting for Payment Authorization", "Paid", "Shipped")

我正在寻找的是:

@orders_in_progress = user.orders.where("state = ?", "Waiting for Payment Authorization" || "Paid" || "Shipped)

另外,我对这里的术语有点困惑 - 这是“具有元素的多个条件的ActiveRecord查询”吗?

1 个答案:

答案 0 :(得分:3)

你可以这样做:

@orders_in_progress = user.orders.where(state: ["Waiting for Payment Authorization", "Paid", "Shipped"])

它将生成" in"查询但它的工作方式与原始查询的工作方式相同。

另外,您可能需要考虑将状态更改为更简单('待定','付费','发货'想到)并使用翻译生成人性化的版本。