【问题标题】:Using CanCanCan for Roles and Multiple Devise Models?将 CanCanCan 用于角色和多个设计模型?
【发布时间】:2019-03-08 00:18:06
【问题描述】:

我需要使用 CanCanCan 来限制所有用户只能查看自己的数据,或允许他人查看有限的数据。

我尝试了以下方法但不起作用:

class Ability
  include CanCan::Ability

      def initialize(user)

        user ||= User.new # guest user (not logged in)
        affiliate ||= Affiliate.new # guest user (not logged in)
        # guest ||= U
        #Admin
        if user.admin?
          can :manage, :all

        elsif user.seller?
            can :manage, Listing, user_id: user.id
            can :read, Listing
            can :manage, Order, buyer_id: user.id
            can :manage, Order, seller_id: user.id
            can :manage, StripeAccount, user_id: user.id

            can :manage, BankAccount, user_id: user.id
            can :manage, User, user_id: user.id

        elsif affiliate
            can :manage, User, affiliate_id: affiliate.id
            can :read, Order
            can :manage, StripeAccount, affiliate_id: affiliate.id
            can :manage, Affiliate, affiliate_id: affiliate.id


        #Buyer
        elsif user.buyer?
          can :read, Listing
          can [:create, :read, :edit, :purchases, :update], Order, buyer_id: user.id

        #Guest
        else
          can :read, Listing
          can [:create, :order_confirmation], Order
          # can :create, User
        end
      end
    end 

当我以会员身份登录时,它不会让我查看与affiliate.id 关联的 StripeAccount,它在模型中。

我有两个模型,User 和 Affiliate。

用户的角色为枚举、1、2、3。 (管理员为 3) Affiliate 的角色为 enum, 1,2

我需要为每个设计模型和每个设计模型中的每个角色设置限制。

【问题讨论】:

    标签: ruby-on-rails ruby devise cancan cancancan


    【解决方案1】:

    这个好像已经解决了,还在测试中:

    private
    
      def current_ability
        @current_ability ||= Ability.new(current_user, current_affiliate)
      end
    

    然后用:

    def initialize(user, affiliate)
    

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2013-01-02
      • 2014-06-24
      • 2012-08-13
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      相关资源
      最近更新 更多