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

时间:2014-03-24 21:35:26

标签: ruby-on-rails postgresql datetime devise

我确定这很容易,但出于某些原因我无法得到它。我正在使用psqldevise。我有一个user模型,其中包含expiration列。我尝试做的是,当使用登录时,设计包括检查到期时间。

我已覆盖模型中的active_for_authentication?方法,如下所示:

def active_for_authentication? 
  super && expiration > Time.now.to_s(:db)
end 

但是现在它让每个人都进来......

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

编辑我在amount是动态变量的更新之前设置了这样的过期时间:

self.expiration = amount.weeks.from_now

编辑2 Rails控制台说:

#<User:xxx> {:expiration => Mon, 24 Mar 2014 19:19:42 UTC +00:00}

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

显然他们是不同的,这就是为什么我认为他们没有工作。我试图找出的是,如果有一些简单的转换,我会丢失,例如:.to_s(:db)或者我是否必须进行某种字符串比较。

1 个答案:

答案 0 :(得分:1)

不要比较字符串,让它在时间上进行比较。

def active_for_authentication? super && expiration.to_time > Time.now end