2014-06-13 51 views
0

我構建了一個多租戶應用程序,並且在兩個租戶中有特定的身份驗證邏輯,因此我在受約束的範圍內定義了設計路線(爲了讓兩個套名稱空間路線,與他們自己的控制器):當在一個範圍內定義設計路線時,未定義的局部變量或方法`current_user'

scope(as: 'geea', module: 'geea', constraints: TenantConstraint.new('geea')) do 
    devise_for(:users, { 
    encryptor: :md5, 
    controllers: { 
     confirmations:  'geea/users/confirmations', 
     sessions:   'geea/users/sessions', 
     registrations:  'geea/users/registrations', 
     omniauth_callbacks: 'geea/users/omniauth_callbacks', 
     passwords:   'geea/users/passwords' 
    } 
    }) 

    devise_scope :user do 
    namespace :backoffice do 
     get 'signin', to: 'sessions#new',  as: 'new_user_session' 
     post 'signin', to: 'sessions#create', as: 'user_session' 
     delete 'signout', to: 'sessions#destroy', as: 'destroy_user_session' 
    end 
    end 
end 

問題是,導致Devise助手不能在我的控制器中可用。

undefined local variable or method `current_user' for #<Geea::Frontoffice::HomeController:0x007fd14d4a36e0> 

我該怎麼處理它?

謝謝!

+1

檢查用戶是否正確登錄,有時如果用戶未成功登錄,則current_user方法保持未定義狀態。 –

+0

應該總是定義'current_user',但返回nil或User對象。在定義範圍內定義路線之前,我沒有任何問題。 –

+0

您是否嘗試將範圍外的devise_for塊移動並將範圍保留在範圍內? – dgilperez

回答

2

我遇到了同樣的問題。我用一個版本來命名api。設計落在命名空間之下。嘗試類似current_api_v1_user

相關問題