【问题标题】:CanCan authorize by idCanCan通过id授权
【发布时间】:2012-08-11 03:41:04
【问题描述】:

我在 Rails 中有一个多对多的关系,一个用户拥有并属于许多 user_types,反之亦然。那么 user_type 有很多角色。

roles_fruits 表的示例表:

role_id:1,fruit_id:6

角色表示例:

id:1,姓名:Bannana Worker

用户示例表:

id:1,用户名:employee143

水果桌示例:

id:6,名字:bananna

在模型中

user.rb

has_and_belongs_to_many :roles

roles.rb

has_and_belongs_to_many :users

现在,我想要完成的是让具有“Bannana Worker”(id 1)角色的用户能够访问它,而没有它的用​​户则不能进入它。

伪代码看起来像这样:

如果 user.roles 包含水果 id 则可以:manage,fruit

我如何使用 cancan 来实现这一点,如果不可能的话,什么是好的替代 gem?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cancan


    【解决方案1】:

    ability.rb尝试这样的事情

    can :manage Fruit do |fruit|
      user.roles.exists?(fruit.id)
    end
    

    在你的控制器中你可以做

    def your_action
      @fruit = ...
    
      authorize! :manage, @fruit
    
      #  ...
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-09
      • 1970-01-01
      • 1970-01-01
      • 2013-07-18
      相关资源
      最近更新 更多