У меня есть классы декораторов, такие как:
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
сделает это, но это не так.