首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Doorkeeper::AccessToken + Mongoid:查询所有过期的令牌

Doorkeeper::AccessToken + Mongoid:查询所有过期的令牌
EN

Stack Overflow用户
提问于 2015-04-16 17:11:07
回答 1查看 151关注 0票数 0

我在Mongoid4中存储了很多access_tokens。我希望根据令牌的expires_in字段(以秒为单位)和created_at字段(类型为Time )查询所有过期和未过期的令牌。

这两个字段如下所示:

代码语言:javascript
复制
field :created_at, type: Time
field :expires_in, type: Integer

我知道我可以像这样按日期查询Doorkeeper::AccessToken.where(created_at: (3.days.ago..Time.now))

但是如何在一个查询中比较created_at字段和expires_in字段呢?我希望拥有所有访问令牌,其中created_at字段加上来自expires_in的秒数比Time.now更小或更大。这有可能吗?或者我必须遍历所有条目,然后手动选择它们?

EN

回答 1

Stack Overflow用户

发布于 2015-05-02 10:46:01

在这里可以使用Mongoid的MapReduce特性来做一些事情,但是一种简单的方法可能是首先选择最大的expires_in值,然后查询:

代码语言:javascript
复制
Doorkeeper::AccessToken.where(created_at: (3.days.ago..Time.now-max_expires_in))

这为您提供了一个已知超出范围的令牌列表。

然后你可以这样做:

代码语言:javascript
复制
Doorkeeper::AccessToken.where(created_at: ((Time.now-max_expires_in)..Time.now))

对于较小的列表,您必须手动过滤。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29670205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档