PaperTrail: info_for_paper_trail вне контекста контроллера

Я используюpaper_trail драгоценный камень для управления версиями моих моделей.

Пока что моя модель зависит отinfo_for_paper_trail метод в:ApplicationController

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

Это прекрасно работает в контексте контроллера, но есть ли способ, которым я могу воспроизвести подобные вещи вне контекста контроллера (например, отложенная работа)?

Я попытался создать виртуальный атрибут с именемrevision и прохождениеproc вhas_paper_trail, но это ошибки сmethod not found исключение:

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

На основании этого результата я предполагаю, чтоmeta не может взятьprocи плюс я невсе равно, как пахнет это решение ...

Ответы на вопрос(2)

Ваш ответ на вопрос