我正在使用 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
从上面我的问题,
rails g cancan:user_ability
但我得到的错误是 找不到生成器 cancan:user_ability .
有没有其他解决方案?
任何人请帮助解决这个问题
最佳答案
...也就是说,如果您愿意,可以直接使用多个能力模型:
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/