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
и плюс я невсе равно, как пахнет это решение ...