[英]cancancan polymorphic associations ability (has_many)
我有嵌套的资源,我想允许部门/ 1 /列表,公司/ 1 /列表继续进行,我该怎么做? 顺便说一句,我使用Rails 5和Cancancan 2.0
这是我的文件:
的routes.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
list.rb
class List < ApplicationRecord
belongs_to :listable, polymorphic: true
end
department.rb
class Department < ApplicationRecord
has_many :lists, as: :listable
end
company.rb
class Company < ApplicationRecord
has_many :lists, as: :listable
end
lists_controller.rb
class ListsController < ApplicationController
load_resource :department
load_resource :company
load_resource :user
load_and_authorize_resource :list, :through => [:department, :company, :user]
ability.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
谢谢。
我仍然不知道
有人请帮助我。
尝试:
class ListsController < ApplicationController
load_resource :department
load_resource :company
load_resource :user
load_and_authorize_resource :list, :through => [:department, :company, :user]
end
不是lists
,而是list
:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.