我正在运行非常奇怪的日期范围查询问题。当我使用DateTime.now.utc选项来查询数据库,为DateTime.now查询日期是不同的,我的现任DateTime.now(这是在控制台上返回即一个。)使用mongoid日期范围查询的奇怪行为。 - Rails 3
我mogoid.yml使用说明 -
use_utc: true
我有我的命名范围这样的 -
scope :running_auctions, {
:where => { :end_time.gt => DateTime.now.utc },
:order_by => [:end_time, "ASC"]
}
而且在控制台上我可以做到这一点 -
加载开发环境(滑轨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>
请注意,我这里日期是星期五07月22日0点42分38秒UTC 2011
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
注意这里,我的日期时间是周五,7月22日2011 6时12分59秒+0000
什么使查询日期比实际当前日期更早? mogoid或mongodb在缓存吗? 请让我知道如果我失去了一些东西。
UPDATE
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
你能更新与范围代码和呼叫范围的问题吗? – rubish