6
我使用Rails Admin和Devise進行管理和用戶模型。我在用戶模型中添加了一列「admin」來表示它的身份。在config/routes.rb中,我mount/admin for RailsAdmin:引擎使用Devise和Rails Admin進行特定路由驗證
我想只允許current_user.admin用戶訪問/ admin,否則將用戶重定向到主頁。
我該如何在最乾淨的代碼中實現它?
我使用Rails Admin和Devise進行管理和用戶模型。我在用戶模型中添加了一列「admin」來表示它的身份。在config/routes.rb中,我mount/admin for RailsAdmin:引擎使用Devise和Rails Admin進行特定路由驗證
我想只允許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 root_path
end
end
end
非常感謝。但是我怎樣才能覆蓋默認的Rails_admin引擎?沒有可以繼承的admincontroller。 – bobzsj87 2013-03-05 16:18:55
我更新了rails管理引擎的答案 – rorra 2013-03-05 19:45:14
太棒了!非常感謝! – bobzsj87 2013-03-07 04:46:57