Gem cancan 的配置

xjz19901211 · 2012年11月23日 · 最后由 xjz19901211 回复于 2012年11月24日 · 2505 次阅读

才刚玩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么?

共收到 8 条回复

多了就存数据库里呗

你的所有权限都配置在AbilityConfig里面吗?

@ywencn 汗,能放数据库里么,像

can :edit, User do |user|
   user.id == current_user.id
end

我要怎么折腾进去呢

·@kaka 恩都在这一个文件里,写的时候,分开到没想过。。哈哈

@ywencn 看到Ability in database的文档,我去看看,才上手两天,这些还真不了解,哈哈

还是不怎么怎么放。。。

看看cancan里头的Role Based Authorization呢 https://github.com/ryanb/cancan/wiki/Role-Based-Authorization

@clark 恩,谢谢,但或许是我英文烂到不能再烂了吧,看资料都借用工具半翻译的看,哈哈

我发现光看没感觉啊,还是要有时间再去写写,这个周末要加班。。。

另外谢谢大家了,嘿嘿

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册