尝试重置密码我收到错误NoMethodError未定义的方法`+'对于NilClass。我想这可能是由于设计方法
def confirmation_period_expired?
self.class.confirm_within && (Time.now > self.confirmation_sent_at + self.class.confirm_within )
end
因为在db中,confirmation_sent_at仍然为零。我想知道为什么
def generate_confirmation_token
self.confirmation_token = self.class.confirmation_token
self.confirmation_sent_at = Time.now.utc
end
没有设置confirmation_sent_at。不知道为什么,但是没有调用generate_confirmation_token。有什么想法吗?
答案 0 :(得分:0)
尝试
def generate_confirmation_token
self.confirmation_token = self.class.confirmation_token
self.confirmation_sent_at = Time.now.utc
# you dont save your instance
save
# now saved
end
答案 1 :(得分:0)
可能你有错误
def confirmation_period_expired?
total_sent_at = (self.confirmation_sent_at.nil? || self.class.confirm_within.nil?) ? 0.0 : (self.confirmation_sent_at + self.class.confirm_within)
self.class.confirm_within && (Time.now > total_sent_at )
end
您也可以使用try
答案 2 :(得分:0)
这是Devise的旧版本。在以前的Devise版本(< 3.1.0)中,重置密码会自动确认用户帐户而不发送确认。更多http://blog.plataformatec.com.br/2013/08/devise-3-1-now-with-more-secure-defaults/