2016-06-01 67 views
0

我有一个模型在阵列选择使用ActiveRecord枚举

class Order < ActiveRecord::Base 
    ... 
    enum status: [:started, :finished, :failed, :processing] 
    ... 
end 

而且要选择所有加工和成品的订单。我不能简单地写

@orders = Order.where(status: [:finished, :processing]) 

因为状态字段自然是一个整数,而不是字符串或文字。所以,这种说法产生

2.2.0 :008 > Order.where(status: [:finished, :processing]) 
    SELECT "orders".* FROM "orders" WHERE "orders"."status" IN (NULL, NULL) 

我现在下面

@orders = Order.where(status: [:finished, :processing].map { |s| Order.statuses[s] } 

有没有什么更好的办法?

+0

尝试'@orders = Order.where(状态:[1,3])' – Pavan

+0

谢谢你,但它打破抽象。我想通过它的名称来调用订单状态,而不是整数 – mbeloshitsky

回答

2

当你想打电话给订单状态由它的名字,下面应该工作

@orders = Order.where(status: Order.statuses[:finished, :processing])