Rails 作业出现 ArgumentError - 参数数量错误 - 如何调试?
Rails ArgumentError on Job - wrong number of arguments - how to debug?
我正在尝试使用以下内容在我的规格范围内创建作业,但不断收到 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
我正在尝试使用以下内容在我的规格范围内创建作业,但不断收到 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