Devise within namespace

Simply “moving” Devise to the admin namespace is wrong. Devise uses controllers like Devise::SessionsController and that cannot be “moved”.

I usually create my own controllers and inherit them from Devise:

class Admin::SessionsController < ::Devise::SessionsController
  layout "admin"
  # the rest is inherited, so it should work
end

And configure this in config/routes.rb:

devise_for :admins, :controllers => { :sessions => "admin/sessions" }

Or you could change the layout only, by making the layout a bit more complex:

class ApplicationController < ActionController::Base

  layout :layout

  private

  def layout
    if devise_controller? && devise_mapping.name == :admin
      "admin"
    else
      "application"
    end
  end

end

Leave a Comment

Hata!: SQLSTATE[HY000] [1045] Access denied for user 'divattrend_liink'@'localhost' (using password: YES)