设计管理员重定向

时间:2012-05-31 05:49:22

标签: ruby-on-rails ruby-on-rails-3 devise

我正在使用Devise + CanCan并希望重定向到我的管理界面(由rails admin gem生成)如果它是 ADMIN ,则登录..

我使用以下内容将 USER 重定向自定义为各自的个人资料:

class ApplicationController < ActionController::Base
  protect_from_forgery
  rescue_from CanCan::AccessDenied do |exception|
    redirect_to root_path, :alert => exception.message
  end
  def after_sign_in_path_for(resource)
    user_path(current_user)
  end

end

role.rb

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users, :join_table => :users_roles
  belongs_to :resource, :polymorphic => true
end

ability.rb

class Ability
  include CanCan::Ability

  def initialize(user)
    user ||= User.new # guest user (not logged in)
    if user.has_role? :admin
      can :manage, :all
      can :access, :rails_admin
      can :dashboard 
    end

user.rb

class User < ActiveRecord::Base
    rolify
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable
 .....

1 个答案:

答案 0 :(得分:4)

我假设您的用户模型有一个布尔admin属性。

def after_sign_in_path_for(resource)
  if current_user.has_role? :admin
    rails_admin.dashboard_path
  else
    user_path(current_user)
  end
end