在激活用户时,restful_authentication中的DoubleRenderError与acts_as_state_machine一起使用

时间:2008-10-13 19:28:09

标签: ruby-on-rails ruby authentication restful-authentication

在使用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的渲染中,路由为“/”。

我应该寻找什么?

1 个答案:

答案 0 :(得分:1)

Acts As State Machine有时会有一些奇怪的行为,即写入数据库的保存记录与内存中的对象不同步。我打赌你有一种情况,即使正在设置数据库中的字段,反对新激活的用户的ruby对象也不会被更新(反之亦然)。

我需要看到实际运行的控制器操作,以便将您设置的路径与“/”匹配,但我敢打赌,您在该操作中遇到了由于这种不一致而被绊倒的微妙不一致的情况。 AASM。尝试在该控制器操作开始时重新加载用户对象,以查看问题是否消失。如果没有开始调试,请确保您的状态更改实际上已保存到db。