使用 ruby mongoid gem 过滤嵌套属性

Filter nested attributes with ruby mongoid gem

我定义了以下范围(在我的模型中)以帮助我过滤掉某些不需要的嵌套数据。

scope :active_inactive, -> { self.in({
      state: ["current"],
      "events.type" => [
        :active,
        :inactive,
      ]
    }).desc(:created_at) 
  }

当我 运行 时,我得到的结果包含其他事件,例如此范围不应包含的 "in_progress"。

我觉得你的代码应该重写成

scope :active_inactive, -> {
  self.where(:state.in => ["current"], :"events.type".in =>["active","inactive"]}).desc(:created_at) 
}