【发布时间】:2011-07-22 06:24:24
【问题描述】:
我正在运行非常奇怪的日期范围查询问题。当我使用 DateTime.now.utc 选项查询数据库时,DateTime.now 的查询日期与我当前的 DateTime.now 不同(即在控制台上返回的日期。)
我的 mogoid.yml 使用-
use_utc: true
我有这样的命名范围 -
scope :running_auctions, {
:where => { :end_time.gt => DateTime.now.utc },
:order_by => [:end_time, "ASC"]
}
在控制台上我可以做到这一点 -
加载开发环境(Rails 3.0.7)
irb(main):001:0> Auction.running_auctions
=> #<Mongoid::Criteria
selector: {:end_time=>{"$gt"=>Fri Jul 22 00:42:38 UTC 2011}},
options: {:sort=>[:end_time, "ASC"]},
class: Auction,
embedded: false>
请注意,我的日期是 2011 年 7 月 22 日星期五 00:42:38 UTC
irb(main):002:0> DateTime.now
=> Fri, 22 Jul 2011 11:42:56 +0530
irb(main):003:0> DateTime.now.utc
=> Fri, 22 Jul 2011 06:12:59 +0000
请注意,我的约会时间是 2011 年 7 月 22 日星期五 06:12:59 +0000
是什么让查询日期早于实际当前日期? mogoid 或 mongodb 在那里做缓存吗? 如果我遗漏了什么,请告诉我。
更新
Loading development environment (Rails 3.0.7)
irb(main):001:0> Auction.running_auctions(DateTime.now.utc)
=> #<Mongoid::Criteria
selector: {:end_time=>{"$gt"=>Fri Jul 22 01:21:53 UTC 2011}},
options: {:sort=>[:end_time, "ASC"]},
class: Auction,
embedded: false>
irb(main):002:0> DateTime.now.utc
=> Fri, 22 Jul 2011 06:52:03 +0000
【问题讨论】:
-
你能用范围代码和对范围的调用来更新问题吗?
标签: ruby-on-rails ruby mongodb mongoid