6

管理者モデルとユーザーモデルにはRailsAdminとDeviseを使用しています。IDを示すために、ユーザーモデルに「admin」列を1つ追加しました。

config/routes.rb、私はのためにマウント/adminしますRailsAdmin:Engine

current_user.adminユーザーにアクセスのみを許可したい/admin。そうでない場合は、ユーザーをホームページにリダイレクトします。

これを最もクリーンなコードで実装するにはどうすればよいですか?

4

1 に答える 1

15

管理コントローラー:

class MyAdminController < ApplicationController
  before_filter :authenticate_user!
  before_filter :require_admin
end

アプリケーションコントローラー:

class ApplicationController < ActionController::Base


  def require_admin
    unless current_user && current_user.role == 'admin'
      flash[:error] = "You are not an admin"
      redirect_to root_path
    end        
  end
end

申し訳ありませんが、それがrails adminであることに気づいていませんでした、あなたはすることができます:

# in config/initializer/rails_admin.rb

RailsAdmin.config do |config|
  config.authorize_with do |controller|
    unless current_user.try(:admin?)
      flash[:error] = "You are not an admin"
      redirect_to main_app.root_path
    end
  end
end
于 2013-03-04T10:00:44.907 に答える