Ruby on rails Rails:将DateTime与Time.now进行比较

Ruby on rails Rails:将DateTime与Time.now进行比较,ruby-on-rails,postgresql,datetime,devise,Ruby On Rails,Postgresql,Datetime,Devise,我相信这非常简单,但由于某些原因我就是无法做到。我正在使用psql和designe。我有一个user模型,它有一个expiration列。我想做的是,当用户登录时,让design也包含过期检查 我已经覆盖了模型中的active\u for\u authentication?方法,如下所示: def active_for_authentication? super && expiration > Time.now.to_s(:db) end 但现在它让所有人都进来了

我相信这非常简单,但由于某些原因我就是无法做到。我正在使用
psql
designe
。我有一个
user
模型,它有一个
expiration
列。我想做的是,当用户登录时,让design也包含过期检查

我已经覆盖了模型中的
active\u for\u authentication?
方法,如下所示:

def active_for_authentication? 
  super && expiration > Time.now.to_s(:db)
end 
但现在它让所有人都进来了

帮帮我,你是我唯一的希望

编辑在更新之前,我会这样设置过期时间,
金额
是一个动态变量:

self.expiration = amount.weeks.from_now
编辑2Rails控制台显示:

{:expiration=>2014年3月24日星期一19:19:42 UTC+00:00}

2.0.0p0:013>Time.now
2014-03-2413:10:47-0700


显然它们是不同的,这就是为什么我认为它们不起作用。我试图找出的是,我是否缺少一些简单的转换,例如:
。到_s(:db)
,或者我是否必须进行某种字符串比较

不要比较字符串,让它按时比较

def active_用于_身份验证?
super&&expiration.to_time>time.now

结束

为什么说
self.expiration
是一个
DateTime
?为什么
3.weeks.from_now>Time.now
不会返回
true
?。。。我是不是搞错了?因为DB中的列是DateTime格式的。(这可能不正确,但我认为应该是这样)尝试
3周。从现在开始.class
#=>ActiveSupport::TimeWithZone,还有,
User.last.created_at.class
#=>ActiveSupport::TimeWithZone当我尝试这个时,我得到以下信息:
2.0.0p0:016>置“真”如果@user.expiration.to_time>time.now nil 2.0.0p0:017>放置@user.expiration.to_time 2014-03-24 19:19:42 UTC nil 2.0.0p0:018>放置time.now 2014-03-24 15:00:32-0700 nil 2.0.0p0:019>
对于格式设置很抱歉-基本上它返回
nil
而不是
true
。看起来不同的是,
.to_time
正在返回
UTC
时间。现在
正在返回
-0700
,该行将不起作用。。。尝试只输入以下内容:
@user.expiration.to_time>time。现在