如何将 Rails SolidQueue Mission Control 与 Pundit 策略结合使用?

问题描述 投票:0回答:1

我已经使用 SolidQueue 一段时间并取得了良好的成功。任务控制刚刚发布,所以我添加了该 gem 和配置。但是,在访问 /jobs 页面时,我收到以下错误:

Pundit::PolicyScopingNotPerformedError at /MissionControl::Jobs::QueuesController

Pundit 正在监视 QueuesController 的授权。我无权访问该控制器来跳过/定义授权——那么,我该如何解决这个问题呢?我发现可以使用“base_controller_class”配置为任务控制控制器设置基类——我尝试了这一点,希望错误能够改变,但我只是得到了同样的错误。

我希望最终能与 Pundit 一起保护/工作。但是,首先我想看到 /jobs 页面加载成功。谢谢!

ruby-on-rails rails-activejob pundit solid-queue mission-control-jobs
1个回答
0
投票

这可能不是最好的解决方案,但目前有效。

由于 MissionControl 继承自主机应用程序 ApplicationController,我知道我可以在那里解决这个问题。因此,在 ApplicationController 中我创建了一个新方法:

  def mission_control_controller?
    is_a?(::MissionControl::Jobs::QueuesController)
  end

然后,我简单地打电话:

skip_after_action :verify_policy_scoped, if: :mission_control_controller?

我不需要授权范围(因此,可以安全地跳过),我只需要授权对/jobs页面/操作的访问。

© www.soinside.com 2019 - 2024. All rights reserved.