gpt4 book ai didi

ruby-on-rails - 多个 before_filter 语句用于正确的用户和管理员

转载 作者:行者123 更新时间:2023-12-04 05:36:15 25 4
gpt4 key购买 nike

我有一个组资源,我正在尝试使用适当的授权进行设置。

我试图实现的授权逻辑是这样的:

  • 只有群组成员才能查看他们的群组。
  • 管理员可以查看任何组,以及执行其他操作。

  • 我正在尝试使用组 Controller 中的以下 before_filter 语句执行此操作:
    before_filter :signed_in_user
    before_filter :correct_user, only: :show
    before_filter :admin_user, only: [:show, :index, :edit, :update, :destroy]

    Correct_user 有效,因为我已经验证只有组成员才能查看他们的组。但是,我想要发生的是 admin :show 子句来覆盖它,以便管理员可以查看任何组。目前这是行不通的。我猜我的过滤器排序和选项有问题。

    有人能告诉我我哪里出错了吗?

    编辑

    根据 Amar 的请求添加我的方法代码:
    private

    def correct_user
    # User has to be a member to view
    @group = Group.find(params[:id])
    redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil?
    end

    def admin_user
    redirect_to(root_path) unless current_user.admin?
    end

    最佳答案

    更新正确的用户方法或使用以下定义创建另一个方法,从其他过滤器中删除 show 并使用新方法添加 before_filter。

    def correct_user
    @group = Group.find(params[:id])
    redirect_to(root_path) if @group.members.find_by_member_id(current_user).nil? && !current_user.admin?
    end

    关于ruby-on-rails - 多个 before_filter 语句用于正确的用户和管理员,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10150098/

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