1

restful_authentication使用acts_as_state_machine和電子郵件激活的項目中,只要用戶通過電子郵件鏈接執行激活操作,就會出現雙重呈現錯誤。激活用戶時在restful_authentication中使用acts_as_state_machine時出現DoubleRenderError

我使用的是默認

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

Acts作爲狀態機有時會有一些奇怪的行爲,寫入數據庫的保存的記錄將與內存中的對象不同步。我敢打賭,你有一種情況,對應於新激活的用戶的紅寶石對象即使在db中的字段被設置(反之亦然)時不會被更新。

我需要看看實際運行的控制器動作來渲染你設置的匹配「/」的路由,但是我敢打賭,你在這個動作中出現了微妙不一致的情況,在AASM。嘗試在該控制器操作開始時重新加載用戶對象,以查看問題是否消失。如果沒有開始調試,請確保您的狀態更改實際上正在保存到數據庫中。