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>
我該怎麼處理它?
謝謝!
檢查用戶是否正確登錄,有時如果用戶未成功登錄,則current_user方法保持未定義狀態。 –
應該總是定義'current_user',但返回nil或User對象。在定義範圍內定義路線之前,我沒有任何問題。 –
您是否嘗試將範圍外的devise_for塊移動並將範圍保留在範圍內? – dgilperez