I'm encountering an issue with PaperTrail in my Rails application where I'm trying to store both controller-level and model-level metadata in the versions
table, but only the controller-level metadata (app_id
and org_id
) is being stored. Here's how I've configured it:
class Table < ApplicationRecord self.table_name = 'tablename ' has_paper_trail meta: { metadata: lambda { |record| user = record.admin_apps_orgs_user.user acted_user = { id: user.id, name: "#{user.given_name} #{user.family_name}", email: user.email } controller_metadata = PaperTrail.request.controller_info.try(:[], :metadata) || {} { app_id: controller_metadata[:app_id], org_id: controller_metadata[:org_id], acted_user: acted_user } } }end`
# frozen_string_literal: truemodule PapertrailInfoHelper extend ActiveSupport::Concern def info_for_paper_trail { metadata: { app_id: params[:app_id], org_id: params[:org_id] } } endend
module Api module V1 class MyController < ApplicationController include PapertrailInfoHelper # Controller actions
Issue:
When I update records in AdminAppsOrgsUsersRole
, only the app_id
and org_id
from info_for_paper_trail
are stored in the versions table.
The acted_user
details from the lambda
block in has_paper_trail
metadata are not being stored. I've ensured that PaperTrail.request.controller_info
contains the correct :metadata
values in the Rails console.
Goal:
I want to store both controller-level (app_id
, org_id
) and model-level (acted_user
) metadata in the versions
table using PaperTrail.How can I ensure that the acted_user
details are correctly captured and stored alongside app_id
and org_id
?