Rails ArgumentError on Job - неверное количество аргументов - как отлаживать? - PullRequest
0 голосов
/ 30 мая 2019

Я пытаюсь создать задание в рамках своих спецификаций со следующим, но продолжаю получать ошибку 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).Куда я иду не так?Метод execute принимает 2 аргумента, верно?Как бы я отладил это?

1 Ответ

1 голос
/ 30 мая 2019

Попробуйте это:

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

...