2016-06-01 50 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])