Rails NoMethodError: неопределенный метод `name 'для # - PullRequest
0 голосов
/ 10 мая 2019

Попытка выполнить задание после сохранения записи.

Вот мой код:

/app/models/some_todo_model.rb

class SomeTodoModel < ApplicationRecord
  belongs_to :user

  after_save :create_job_for_notificate_on_due_date

  def create_job_for_notificate_on_due_date
    EmitsNotificationsJob.set(wait_until: self.due_date).perform_later()
  end
end

/app/jobs/emits_notifications_job.rb

class EmitsNotificationsJob < ApplicationJob
  queue_as :default

  # discard_on ActiveJob::DeserializationError

  def perform()
  end
end

EmitsNotificationsJob.set(wait_until: self.due_date) хорошо его настраивает.

Но когда я звоню perform_later, у меня появляется следующая ошибка:
NoMethodError: undefined method 'name' for #<EmitsNotificationsJob:0x000056387e74ce78>

enter image description here

Я не понимаю свою проблему, так как я следую документации здесь .

Как это может быть по той же причине, если я раскомментируюdiscard_on строка, у меня появляется следующая ошибка:
NoMethodError: undefined method 'discard_on' for EmitsNotificationsJob:Class

1 Ответ

0 голосов
/ 10 мая 2019

UPD Вы скопировали неправильный пример (пропущено .class после задания):

class ApplicationJob
  before_enqueue { |job| $statsd.increment "#{job.class.name.underscore}.enqueue" }
end

Также я настоятельно рекомендую удалить строку before_enqueue из app/jobs/application_job.rb на всех,Это просто пример before_enqueue обратного вызова, и пример выглядит как нерабочий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...