激活用户时带有acts_as_state_machine的restful_authentication中的DoubleRenderError

Posted

技术标签:

【中文标题】激活用户时带有acts_as_state_machine的restful_authentication中的DoubleRenderError【英文标题】:DoubleRenderError in restful_authentication with acts_as_state_machine when activating users 【发布时间】:2010-09-16 22:59:42 【问题描述】:

在使用restful_authenticationacts_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】:

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

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

【讨论】:

以上是关于激活用户时带有acts_as_state_machine的restful_authentication中的DoubleRenderError的主要内容,如果未能解决你的问题,请参考以下文章

带有帐户激活检查的 PHP 登录页面 [重复]

收到带有数据的远程通知时激活 iOS 应用程序

Joomla 注册和激活

如何在用户控件上激活 Click 事件?

如何在此表中激活排序?

带有消息的零星 WCF 服务激活错误 - 访问 IIS 元数据库时发生错误