才刚玩 cancan 两天,cancan 配置放一个 Ability 里感觉太乱了,由于不知道怎么把 cancan 的权限配置分离出来,google 了一会也没找到,于是自己弄出一个怪胎 cancan_config: https://github.com/xjz19901211/cancan_config
然后随便个 rb 文件里配置:
CanCanConfig.roles_define do
group Role::SuperAdmin do
can :manage, :all
end
group Role::CommonUser do
can [:update, :destroy], File do |file|
helper :can_manager_file file, current_user
end
end
group :public do
end
helper do
def can_manager_file(question, user)
question.user_id == user.id
end
end
end
Ability 类中只要简单的定义一个 user_role 方法返回当前用户的在配置文件中所在的组就好了
class Ability
include CanCan::Ability
include CanCanConfig::AbilityConfig
# default load path
# @@roles_paht = "config/cancan_roles.rb"
def user_role
if current_user.role
current_user.role
else
Role::CommonUser
end
end
end
感觉我这 gem 写的太烂了,现在请教问题:单纯的 cancan 权限多了大家怎么管理的? 如果单纯的 cancan 不好管理的话,大家有什么好用的 Gem 么?