在使用restful_authentication
acts_as_state_machine
和电子邮件激活的项目中,每当用户通过电子邮件链接执行激活操作时,我都会收到双重渲染错误。
我正在使用默认
def activate
self.current_user = params[:activation_code].blank? ? false : User.find_by_activation_code(params[:activation_code])
if logged_in? && !current_user.active?
current_user.activate!
flash[:notice] = "Signup complete!"
end
redirect_back_or_default('/')
end
激活,默认
def redirect_back_or_default(default)
redirect_to(session[:return_to] || default)
session[:return_to] = nil
end
重定向。重定向方法适用于以相同方式调用的每个其他情况。
双重渲染错误发生在页面main_page / home的渲染中,路由为“/”。
我应该寻找什么?
答案 0 :(得分:1)
Acts As State Machine有时会有一些奇怪的行为,即写入数据库的保存记录与内存中的对象不同步。我打赌你有一种情况,即使正在设置数据库中的字段,反对新激活的用户的ruby对象也不会被更新(反之亦然)。
我需要看到实际运行的控制器操作,以便将您设置的路径与“/”匹配,但我敢打赌,您在该操作中遇到了由于这种不一致而被绊倒的微妙不一致的情况。 AASM。尝试在该控制器操作开始时重新加载用户对象,以查看问题是否消失。如果没有开始调试,请确保您的状态更改实际上已保存到db。