2013-07-05 41 views
4

我正在構建一個應用程序,其中包含兩個使用設計進行身份驗證的漂亮單獨模型。一旦你登錄成房子,那麼房子裏的每個人都可以作爲該房屋的居民登錄。除了一切正常,當我退出使用爲多個用戶設計會話

destroy_resident_session 

與此唯一的問題居民會話的是,它也殺死了房子會話,因爲它要求

Devise::SessionsController#destroy 

我試圖創建居民自定義會話,這是我下面的代碼:

class SessionsController < Devise::SessionsController 

    # DELETE /resource/sign_out 
    def destroy 
    redirect_path = after_sign_out_path_for(resource_name) 
    signed_out = sign_out(resident) 
    set_flash_message :notice, :signed_out if signed_out && is_navigational_format? 

    # We actually need to hardcode this as Rails default responder doesn't 
    # support returning empty response on GET request 
    respond_to do |format| 
     format.all { head :no_content } 
     format.any(*navigational_formats) { redirect_to redirect_path } 
    end 
    end 
end 

這給出了一個錯誤:

undefined local variable or method `resident' 

我可能誤解了方法的邏輯,但它似乎像我想改變的色器件會話控制器下面一行:

signed_out = (Devise.sign_out_all_scopes ? sign_out : sign_out(resource_name)) 

因爲我不想退出所有範圍,只有常駐範圍。

解決

所有我需要做的就是設置

config.sign_out_all_scopes = false 

config/devise.rb 

而且還必須記住重新啓動我的服務器:)

+1

你搖滾!正在與同樣的問題掙扎。這個選項真的應該在自述文件的「配置多個模型」中提及。 :)順便說一句,你應該正式回答這個問題,然後接受你自己的答案。 – odigity

+0

我第二:你應該添加你的解決方案作爲這個問題的答案,然後接受那個答案作爲正確答案。 – Ernesto

回答

2

這應該被標記爲答案。你沒有張貼,但我有同樣的問題,那就是,所以我張貼,爲社會解決

配置/ devise.rb

config.sign_out_all_scopes = false