PaperTrail: info_for_paper_trail fuera del contexto de un controlador

Estoy usando elrastro de papel Joya para versionar mis modelos.

Hasta ahora, mi modelo depende de lainfo_for_paper_trail método enApplicationController:

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

Esto funciona muy bien en el contexto del controlador, pero ¿hay alguna manera de que pueda replicar este tipo de cosas fuera del contexto del controlador (por ejemplo, un trabajo retrasado)?

Intenté crear un atributo virtual llamadorevision y pasando unproc dentrohas_paper_trail, pero falla con unamethod not found excepción:

# 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!

Supongo basado en este resultado quemeta no puede tomar unprocY además, no me gusta cómo huele esta solución ...

Respuestas a la pregunta(2)

Su respuesta a la pregunta