我使用枚举来存储我的模型的状态:
enum status: [ :fresh, :approved, :rejected, :returned, :completed, :removed ]
现在我想选择具有多个状态值的对象,如下所示:
Documents.find_by_status(:fresh, :returned)
我应该如何在Rails 4中正确执行?
答案 0 :(得分:2)
每个enum属性在表列中都有其值的整数表示。 默认情况下,您的状态将包含值 - fresh:0,已批准:1,拒绝:2,依此类推。 获取具有一个或另一个值的实例的最简单方法是调用类似
的内容Document.where(status: [0, 1])
为了提高可读性,您可以在模型中实现范围。
class Document < ActiveRecord::Base
enum status: %i(fresh approved rejected returned completed removed)
scope :find_by_status, ->(*args) { where(status: self.statuses.values_at(*args)) }
end
并以更人性化的方式使用它
Document.find_by_status(:fresh, :returned)