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
而且還必須記住重新啓動我的服務器:)
你搖滾!正在與同樣的問題掙扎。這個選項真的應該在自述文件的「配置多個模型」中提及。 :)順便說一句,你應該正式回答這個問題,然後接受你自己的答案。 – odigity
我第二:你應該添加你的解決方案作爲這個問題的答案,然後接受那個答案作爲正確答案。 – Ernesto