当前位置:  开发笔记 > 编程语言 > 正文

Mongoid命名范围比较同一文档中的两个时间字段

如何解决《Mongoid命名范围比较同一文档中的两个时间字段》经验,为你挑选了1个好方法。

我需要在Mongoid中创建一个命名范围,用于比较同一文档中的两个时间字段.如

scope :foo, :where => {:updated_at.gt => :checked_at}

这显然不会起作用,因为它被视为:checked_at一个符号,而不是实际的领域.有关如何做到这一点的任何建议?

更新1

这是我的模型,我声明了这个范围,删除了许多额外的代码.

class User
  include Mongoid::Document
  include Mongoid::Paranoia
  include Mongoid::Timestamps

  field :checked_at, :type => Time

  scope :unresolved, :where => { :updated_at.gt => self.checked_at }
end

这给了我以下错误:

'': undefined method 'checked_at' for User:Class (NoMethodError)



1> Baju..:

据我所知,mongodb不支持对动态值的查询.但你可以使用javascript函数:

scope :unresolved, :where => 'this.updated_at >= this.checked_at'

为了加快这一速度,你可以添加一个像"is_unresolved"这样的属性,当这个条件匹配时(和索引那个),它将在更新时设置为true.

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有