我确定这很容易,但出于某些原因我无法得到它。我正在使用psql
和devise
。我有一个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)
或者我是否必须进行某种字符串比较。
答案 0 :(得分:1)
不要比较字符串,让它在时间上进行比较。
def active_for_authentication?
super && expiration.to_time > Time.now
end