管理者モデルとユーザーモデルにはRailsAdminとDeviseを使用しています。IDを示すために、ユーザーモデルに「admin」列を1つ追加しました。
でconfig/routes.rb
、私はのためにマウント/admin
しますRailsAdmin:Engine
current_user.admin
ユーザーにアクセスのみを許可したい/admin
。そうでない場合は、ユーザーをホームページにリダイレクトします。
これを最もクリーンなコードで実装するにはどうすればよいですか?
管理者モデルとユーザーモデルにはRailsAdminとDeviseを使用しています。IDを示すために、ユーザーモデルに「admin」列を1つ追加しました。
でconfig/routes.rb
、私はのためにマウント/admin
しますRailsAdmin:Engine
current_user.admin
ユーザーにアクセスのみを許可したい/admin
。そうでない場合は、ユーザーをホームページにリダイレクトします。
これを最もクリーンなコードで実装するにはどうすればよいですか?
管理コントローラー:
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