Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 4 通过rails中的几个枚举值选择对象_Ruby On Rails 4_Enums_Rails Activerecord - Fatal编程技术网

Ruby on rails 4 通过rails中的几个枚举值选择对象

Ruby on rails 4 通过rails中的几个枚举值选择对象,ruby-on-rails-4,enums,rails-activerecord,Ruby On Rails 4,Enums,Rails Activerecord,我使用枚举存储模型的状态: enum status: [ :fresh, :approved, :rejected, :returned, :completed, :removed ] 现在我想选择具有多个状态值的对象,如下所示: Documents.find_by_status(:fresh, :returned) 如何在Rails 4中正确执行此操作?每个枚举属性在表列中都有其值的整数表示。 默认情况下,您的状态将具有值–新鲜:0、批准:1、拒绝:2等等。 获取具有一个或另一个值的实例的

我使用枚举存储模型的状态:

enum status: [ :fresh, :approved, :rejected, :returned, :completed, :removed ]
现在我想选择具有多个状态值的对象,如下所示:

Documents.find_by_status(:fresh, :returned)

如何在Rails 4中正确执行此操作?

每个枚举属性在表列中都有其值的整数表示。 默认情况下,您的状态将具有值–新鲜: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)