PaperTrail: info_for_paper_trail fora do contexto de um controlador

Estou usando opaper_trail gem para versionar meus modelos.

Até agora, meu modelo depende doinfo_for_paper_trail método emApplicationController:

class ApplicationController < ActionController::Base
  # Extra columns to store along with PaperTrail `versions`
  def info_for_paper_trail
    { revision_id: @revision.id, revision_source_id: @revision_source.id }
  end
end

Isso funciona muito bem no contexto do controlador, mas existe uma maneira de replicar esse tipo de coisa fora do contexto do controlador (por exemplo, um trabalho atrasado)?

Eu tentei criar um atributo virtual chamadorevision e passando umproc para dentrohas_paper_trail, mas com erros com ummethod not found exceção:

# Attempt to solve this in the model
class Resource < ActiveRecord::Base
  # Virtual attribute
  attr_accessor :revision

  # Attempt to use virtual attribute only if set from delayed job
  has_paper_trail meta: proc { |resource| resource.revision.present? ? { revision_id: resource.revision.id, revision_source_id: revision.revision_source.id } : {} }
end

# Gist of what I'm trying to do in the delayed job
resource = Resource.new
resource.revision = Revision.new(user: user, revision_source: revision_source)
resource.save!

Eu assumo baseado neste resultado quemeta não pode tomar umproce mais eu não gosto de como esta solução cheira de qualquer maneira ...

questionAnswers(2)

yourAnswerToTheQuestion