gpt4 book ai didi

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

转载 作者:IT老高 更新时间:2023-10-28 13:33:02 25 4
gpt4 key购买 nike

我需要在 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

这给了我以下错误:

'<class:User>': undefined method 'checked_at' for User:Class (NoMethodError)

最佳答案

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

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

为了加快速度,您可以添加一个类似“is_unresolved”的属性,当此条件匹配时,该属性将在更新时设置为 true(并为其编制索引)。

关于ruby-on-rails - Mongoid 命名范围比较同一文档中的两个时间字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3795044/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com