gpt4 book ai didi

cancan - 你如何处理 :create permission in cancan that's defined by the parent object?

转载 作者:行者123 更新时间:2023-12-04 11:42:28 25 4
gpt4 key购买 nike

假设您正在为 Blogger 编写软件。

每个用户只有在他们是博客的所有者时才能创建博客文章。在这种情况下,CanCan 通常会将能力检查定义为:

user.can? :create, Post

但是,如果用户是当前博客的所有者,则用户只能创建帖子,并且无法仅使用其类名来引用当前博客。我真正需要做的是:
user.can? :create, Post, @current_blog

这样在康康定义中我可以说
can :create, Post do |post, blog|
user == blog.owner
end

这是可能的还是我对如何处理这个问题感到困惑?

最佳答案

根据当前对象的父级定义一个能力:

can :create, Post, :blog => { :user => user }

这将确保当前用户只能为他们拥有的博客创建新的 Post 记录。
  • 用途 Post.blog_id寻找 parent Blog记录
  • 比较 Blog.user_id字段到 current_user.id领域

  • 还要确保您使用的是 :through在加载和授权您的 Post 资源时声明,因此 CanCan 知道父记录是谁。
    PostsController:

    load_and_authorize_resource :through => :blog

    CanCan wiki在 GitHub 上了解更多详细信息。

    关于cancan - 你如何处理 :create permission in cancan that's defined by the parent object?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9375290/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com