如何查询邮件任务

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

[我正在尝试让我的系统通过控制器中的'destroy'方法在删除相关计划的sidekiq任务时自动删除其相关对象。

有问题的任务是添加到sidekiq“计划的”队列中的“动作邮件程序”。在特定时刻,我需要检查所有这些任务,并将参数与模型ID进行比较。

为此,我填充了一系列计划任务,并对其进行迭代;

scheduled_queue = Sidekiq::ScheduledSet.new
scheduled_queue.each do |job| 
  condition = true if job.args[0] == @object.id
end

但是我无法将参数转换为任何可比较的形式。所有参数似乎都存在于job.args数组的[0]中。

<%= job.args.size %> #Returns 1
<%= job.args.first %> #Returns below
---
job_class: ActionMailer::DeliveryJob
job_id: 28c966f3-3fbd-4963-a9cc-64e609803246
provider_job_id: 
queue_name: mailers
priority: 
arguments:
- ResponseMailer
- reminder_email
- deliver_now
- 29
- Third reminder
- 9095
executions: 0
locale: en
<%= job.args.first.class %> #Returns !ruby/class 'Hash'

显然这是一个哈希,但是job.args.first.keys引发错误。

9的未定义方法`keys':整数

如何将变量与邮件程序参数进行比较?

ruby-on-rails ruby actionmailer sidekiq
1个回答
0
投票

设法找到用于访问特定参数(x)的代码;

job.args.first['arguments'].[x]

未定义的方法'keys'错误是由计划队列中格式不同的任务引起的。我的错误是要遍历队列中的每个任务,而不是过滤掉无关的任务。

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