我有一个用于管理餐厅的应用程序,每个餐厅都有一个仪表板(如果允许,可以使用迷你控制面板更改某些设置)。我注意到即使我已经定义了一些功能,任何用户都可以访问任何餐厅的仪表板。基本上,我希望用户只有在餐厅有职位才能访问。目前,ability.rb看起来像这样
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.admin?
can :manage, :all
else
user.roles.each do |role|
role.permissions.each do |permission|
can permission.action.to_sym, permission.subject_class.constantize, restaurant_id: role.restaurant_id
can permission.action.to_sym, permission.subject_class.constantize, id: role.restaurant_id if permission.subject_class == "Restaurant"
end
end
can :read, Restaurant
can :read, Product
can :read, Category
end
end
end
controllers文件夹有一个文件夹'dashboard',受限制的控制器在这里,路径看起来像这样
namespace :dashboard do
resources :restaurants, except: [:index, :destroy] do
resources :products
resources :categories
resources :roles
resources :positions
resources :tables
resources :reservations
end
end
我在cancan文档中搜索了这个,但我找不到任何可以帮助我的东西。感谢您提供有关如何解决该问题的任何建议!