我有嵌套资源,我想允许部门/1/列表、公司/1/列表并继续,我该怎么做?顺便说一句,我使用 rails 5 和 cancancan 2.0
这是我的文件:
路线.rb
resources :departments do
resources :lists
end
resources :lists do
member do
put :done
end
end
devise_for :users, :skip => [:registrations]
devise_scope :user do
root to: "devise/sessions#new"
get "/users/edit" => "devise/registrations#edit", :as => :edit_user_registration
patch "/users" => "devise/registrations#update", :as => :user_registration
put "/users" => "devise/registrations#update"
end
resources :users do
resources :lists
end
resources :companies do
resources :lists
end
列表.rb
class List < ApplicationRecord
belongs_to :listable, polymorphic: true
end
部门.rb
class Department < ApplicationRecord
has_many :lists, as: :listable
end
公司.rb
class Company < ApplicationRecord
has_many :lists, as: :listable
end
列表控制器.rb
class ListsController < ApplicationController
load_resource :department
load_resource :company
load_resource :user
load_and_authorize_resource :list, :through => [:department, :company, :user]
能力.rb
class Ability
include CanCan::Ability
def initialize(user)
user ||= User.new
if user.has_role? :admin
can :manage, :all
else
can :read, List, { :company => { :id => user.company_id } }
can :read, List, { :department => { :id => user.departments.first.id } }
end
end
end
谢谢。
我还是想不通
有人请帮助我。