未定义的局部变量或方法`current_user'在范围内定义设计路线时

时间:2014-06-13 07:56:07

标签: ruby-on-rails devise

我构建了一个多租户应用程序,并且我在两个租户中具有特定的身份验证逻辑,因此我在约束范围内定义了设计路由(为了拥有两组命名空间路由,并拥有自己的控制器):

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>

我怎么处理它?<​​/ p>

谢谢!

1 个答案:

答案 0 :(得分:3)

我遇到了同样的问题。我用一个版本命名api api。 Devise属于命名空间。尝试类似current_api_v1_user

的内容