我正在使用rails 3.0.9,cancan 1.6.7和devise 1.4.8。
我使用两个devise模型(User和Admin)来进行不同的登录和注册流程。
因此,我想根据已登录用户(资源)分配能力,因为有70多个模型,只有10个模型适用于两种类型的用户(这里有50多个模型和视图只由管理员用户使用)。
我想要实现两个Ability类(UserAbility和AdminAbility),并将devise帮助方法current_user/current_admin传递给UserAbility/AdminAbility。
示例:
在ApplicationController.rb文件中:
我使用两个devise模型(User和Admin)来进行不同的登录和注册流程。
因此,我想根据已登录用户(资源)分配能力,因为有70多个模型,只有10个模型适用于两种类型的用户(这里有50多个模型和视图只由管理员用户使用)。
我想要实现两个Ability类(UserAbility和AdminAbility),并将devise帮助方法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。
如何为已登录的用户/管理员选择适当的Ability类。
如果一个控制器既可以被用户又可以被管理员访问,那么如何获取当前已登录的用户/管理员对象
还有其他解决方法吗?
请任何人帮忙解决这个问题
app/models
中创建一个新文件,并include CanCan::Ability
。 - willglynn