首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在cancan中定义能力模型,允许用户用关系编辑值?

如何在cancan中定义能力模型,允许用户用关系编辑值?
EN

Stack Overflow用户
提问于 2013-03-29 07:37:53
回答 2查看 507关注 0票数 0

以下是条件

我有users,他属于一个workcategory也属于一个work

现在,我希望该特定工作的用户对属于该工作的类别进行edit

如何在ability模型中指定这一点?

编辑:

代码语言:javascript
运行
复制
include CanCan::Ability

def initialize(user)

user ||= User.new # guest user

user.roles.each do |role|

role.name

if role.name == "admin"

    can :read, User

    can :create, User

    can :edit, User

    can :destroy, User

end

if role.name == "staff"

         can :read, :all

         can :create, :all

        cannot :edit, Category

        can :update, :all

        can :destroy, :all

       end

    if role.name == "others"

          can :read, :all

   end   

end 

end 

end
EN

回答 2

Stack Overflow用户

发布于 2013-03-29 08:09:06

未经测试,但这应该可以做到:

代码语言:javascript
运行
复制
can :manage, Category, :work_id => user.work_id

参考资料:https://github.com/ryanb/cancan/wiki/defining-abilities

票数 0
EN

Stack Overflow用户

发布于 2013-03-29 08:48:34

在能力类中,您只传递用户。你也需要通过这个类别才能做到,

代码语言:javascript
运行
复制
can :manage, Category if user.work_id == category.work_id  

否则您将不得不像这样迭代(我不会推荐它),

代码语言:javascript
运行
复制
can :manage, Category if user.work_id == user.work.categories.first.work_id  

此链接显示如何向您的能力类发送多个参数。

https://github.com/ryanb/cancan/wiki/Accessing-Request-Data

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15699265

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档