我正在使用管理员面板,我有不同级别的管理员。我在数据库中有一个字段“admin_type”来表示管理员的级别。水平是1,2,3。现在我想实现一些限制,以便管理员级别1无法访问仅适用于管理员级别2的路由。
我搜索了很多谷歌,发现这篇博文有用http://bjedrocha.com/rails/2015/03/18/role-based-routing-in-rails/ 但是当我实现它时它不起作用并且给出了很多错误 这是路线代码。我希望这条路线只能由管理员级别2访问
constraints RouteConstraint.new do
get 'admins/donation_analysis' => 'admins#donation_analysis'
end
这是约束类
class RouteConstraint
def matches?(request)
user = current_user(request)
##render plain: user.inspect
user.present? && user.admin_type?(:2)
end
def current_user(request)
User.find_by_id(request.session[:user_id])
end
end
路线
constraints RouteConstraint.new do
get 'admins/donation_analysis' => 'admins#donation_analysis'
end
#get 'admins/active_account/:token' => 'admins#active_account'
get 'admins/link_expiry' => 'admins#link_expiry'
get 'admins/edit_profile' => 'admins#edit_profile'
post 'admins/update_profile' => 'admins#update_profile'
match '/admins/create_account', to: 'admins#create_account', via: 'post'
match '/admins/:id', to: 'admins#destroy', via: 'get' , as: 'admin_destroy'
resources :admins
但它不起作用
答案 0 :(得分:1)
class RouteConstraint
def matches?(request)
user = current_user(request)
##render plain: user.inspect
user.present? && user.admin_type == "2"
end
def current_user(request)
User.find_by_id(request.session[:user_id])
end
end