首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >癌症多态联想能力(has_many)

癌症多态联想能力(has_many)
EN

Stack Overflow用户
提问于 2017-06-10 23:12:19
回答 0查看 710关注 0票数 1

我有嵌套的资源,并且我想允许部门/1/列表、公司/1/列表等等,我该怎么做?顺便说一句,我正在使用rails 5和cancancan 2.0

以下是我的文件:

routes.rb

代码语言:javascript
复制
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

代码语言:javascript
复制
class List < ApplicationRecord
      belongs_to :listable, polymorphic: true
    end

department.rb

代码语言:javascript
复制
class Department < ApplicationRecord
  has_many :lists,  as: :listable
end

company.rb

代码语言:javascript
复制
class Company < ApplicationRecord  
  has_many :lists, as: :listable
end

lists_controller.rb

代码语言:javascript
复制
class ListsController < ApplicationController
  load_resource :department
  load_resource :company
  load_resource :user
  load_and_authorize_resource :list, :through => [:department, :company, :user]

ability.rb

代码语言:javascript
复制
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

谢谢。

我还是想不通。

谁来帮帮我。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44474852

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档