我有一个模特
class Order < ActiveRecord::Base
...
enum status: [:started, :finished, :failed, :processing]
...
end
并希望选择所有处理和已完成的订单。我不能简单地写
@orders = Order.where(status: [:finished, :processing])
因为status字段自然是整数,而不是字符串或文字。所以这个语句生成
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 :(得分:2)
如果您想通过它的名称来调用订单状态,则以下内容应该有效
@orders = Order.where(status: Order.statuses[:finished, :processing])