繁体   English   中英

cancancan多态关联能力(has_many)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM