Rails,仪表板命名空间和cancancan

时间:2017-01-09 19:09:17

标签: ruby-on-rails cancan

我有一个用于管理餐厅的应用程序,每个餐厅都有一个仪表板(如果允许,可以使用迷你控制面板更改某些设置)。我注意到即使我已经定义了一些功能,任何用户都可以访问任何餐厅的仪表板。基本上,我希望用户只有在餐厅有职位才能访问。目前,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文档中搜索了这个,但我找不到任何可以帮助我的东西。感谢您提供有关如何解决该问题的任何建议!

0 个答案:

没有答案