我使用Rails的管理,并制定了管理员和用户模型。 我增加了一列“admin”的用户模型,以表明其身份。
在config/routes.rb
,我安装/admin
的RailsAdmin:Engine
我只想让current_user.admin
用户访问/admin
,否则,将用户重定向到主页。
我如何能在干净的代码来实现这一点?
我使用Rails的管理,并制定了管理员和用户模型。 我增加了一列“admin”的用户模型,以表明其身份。
在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
对不起,没注意它与轨道管理员,你可以这样做:
# 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