Как сказать классу декоратора сериализоваться как ресурс? - PullRequest
0 голосов
/ 30 сентября 2019

У меня есть классы декораторов, такие как:

class ReportDecorator
  attr_reader :report

  delegate_missing_to :report

  def initialize(report)
    @report = report
  end

  def deliver
    report.deliver && deliver_emails && mark_as_sent
  end

  private

  def deliver_emails
    recipient_emails = report.recipients.pluck(:email).uniq
    return unless recipient_emails.any?

    recipient_emails.each do |email|
      ::Reporting::IUE::ReportMailer.report(report, email).deliver_later
    end
  end
end

, которые я использую следующим образом:

@report = Report.find(params[:id]
@report = OtherReportDecorator.new(@report)
@report = ReportDecorator.new(@report)
@report = SomeOtherReportDecorator.new(@report)
@report.deliver

Проблема в том, что я получаю ошибку

ActiveJob :: SerializationError: Неподдерживаемый тип аргумента: Reporting :: IUE :: ReportUpdateDecorator

, потому что он пытается сериализовать декоратор для работы почтовой программы и не знает, как.

Итак, вопрос в том, как я могу сказать классу декоратора сериализовать так же, как объект отчета? Я думал, что delegate_missing сделает это, но это не так.

...