1

在使用restful_authenticationwithacts_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 的渲染中。

我应该寻找什么?

4

1 回答 1

1

充当状态机有时会出现一些奇怪的行为,即写入数据库的已保存记录与内存中的对象不同步。我敢打赌,即使正在设置数据库中的字段(反之亦然),与新激活的用户对应的 ruby​​ 对象也没有更新。

我需要查看实际运行的控制器操作以呈现您设置的与“/”匹配的路线,但我敢打赌,您在该操作中遇到了微妙的不一致情况,这些情况被 AASM 中的这种不一致所困扰。尝试在该控制器操作开始时重新加载用户对象,以查看问题是否消失。如果没有通过确保您的状态更改实际保存到数据库来开始调试。

于 2008-10-14T08:21:23.260 回答