激活用户时带有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_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】:充当状态机有时会出现一些奇怪的行为,即写入数据库的已保存记录与内存中的对象不同步。我敢打赌,即使正在设置 db 中的字段(反之亦然),与新激活的用户对应的 ruby 对象也没有更新。
我需要查看实际运行的控制器操作以呈现您设置的路线以匹配“/”,但我敢打赌,您在该操作中遇到了微妙的不一致情况,这些情况被这种不一致所困扰AASM。尝试在该控制器操作开始时重新加载用户对象,以查看问题是否消失。如果没有通过确保您的状态更改实际保存到数据库来开始调试。
【讨论】:
以上是关于激活用户时带有acts_as_state_machine的restful_authentication中的DoubleRenderError的主要内容,如果未能解决你的问题,请参考以下文章