gpt4 book ai didi

ruby-on-rails - 是否可以使用具有两个能力等级的康康

转载 作者:行者123 更新时间:2023-12-04 13:11:53 25 4
gpt4 key购买 nike

我正在使用 rails 3.0.9、cancan 1.6.7 和 devise 1.4.8

我正在使用两种设计模型(用户和管理员)进行不同的登录和注册过程

所以我想根据登录用户(资源)来划分能力,因为有超过
70个模型,只有10个模型对两种类型的用户都是通用的(这里有50多个模型和 View 仅供管理员用户使用)

我想实现两个能力类(UserAbility 和 AdminAbility),并且设计助手方法 current_user/current_admin 应该传递给 UserAbility/AdminAbility

例子:

在 ApplicationController.rb 文件中

    def current_ability
if current_user
@current_ability = UserAbility.new(current_user)
elsif current_admin
@current_ability = AdminAbility.new(current_admin)
end
end

从上面我的问题,
  • cancan 中是否可以有多个能力类,如果可能,那么如何创建它,因为我尝试过
    rails g cancan:user_ability
    但我得到的错误是 找不到生成器 cancan:user_ability .
  • 如何为登录的用户/管理员选择合适的能力等级。
  • 如果用户和管理员都访问 Controller ,那么我如何获取当前登录的用户/管理员对象

  • 有没有其他解决方案?

    任何人请帮助解决这个问题

    最佳答案

    ...也就是说,如果您愿意,可以直接使用多个能力模型:

    class UserAbility
    include CanCan::Ability

    def initialize(user)
    can :read, :all
    end
    end

    class AdminAbility
    include CanCan::Ability

    def initialize(admin)
    can :manage, :all
    end
    end

    class ApplicationController < ActionController::Base
    # overriding CanCan::ControllerAdditions
    def current_ability
    if current_account.kind_of?(AdminUser)
    @current_ability ||= AdminAbility.new(current_account)
    else
    @current_ability ||= UserAbility.new(current_account)
    end
    end
    end

    关于ruby-on-rails - 是否可以使用具有两个能力等级的康康,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12748056/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com