ruby - 作业上的 Rails ArgumentError - 参数数量错误 - 如何调试?
问题描述
我正在尝试使用以下规范在我的规范内创建工作,但不断收到 ArgumentError:-
MyJob.new.perform_now(user_id: @current_user.id, building_ids: [building.id])
module ActionPlan
class MyJob < ApplicationJob
queue_as :low
def perform(user_id:, building_ids:, **_args)
@user = User.find(user_id)
@buildings = ActionPlan::Reminder.where(user_id: user_id)
@buildings.map(&method(:create_alerts))
end
我不断得到wrong number of arguments (given 1, expected 0) (ArgumentError)
。我哪里错了?perform 方法需要 2 个参数,对吧?我将如何调试这个?
解决方案
试试这个:
module ActionPlan
class MyJob < ApplicationJob
queue_as :low
def initialize(user_id:, building_ids:, **_args)
@buildings = ActionPlan::Reminder.where(user_id: user_id)
end
def perform
buildings.map(&method(:create_alerts))
end
private
attr_accessor :buildings
end
end
那应该允许您致电:
MyJob.new(user_id: @current_user.id, building_ids: [building.id]).perform
推荐阅读
- python - 将 pyspark 数据框转换为 python 字典列表
- flutter - Flutter TabBarView 展开子
- mysql - 无法在 DDEV 项目中导出完整的 MariaDB
- azure - Azure API 管理 - 外部类型:网关无法访问虚拟网络中的资源?
- python - 使用 Oracle 游标插入 Sql Server 时,大量 Pyodbc 插入无法将 int 转换为 big
- azure-data-explorer - KQL 扩展到新列,里面有汇总
- xcode - 在 XCode 12.2 如何增加整个 UI 的字体大小
- c++ - 返回指针但不允许删除该指针的 C++ 类公共函数?
- node.js - 环境变量不适用于 Typescript 和 NodeJS
- javascript - jqwidgets图表不呈现任何数据