app/models/concerns/zuora_connect/auditable.rb



# frozen_string_literal: true

module ZuoraConnect
  # Added by @Vina
  # Description: This automatically stamp user created/updated the record for DataQuery Audit
  # Usage: add 'include ZuoraConnect::Auditable' to your model.rb that you would like to track
  module Auditable
    extend ActiveSupport::Concern

    included do
      before_create :set_created_by_id
      before_update :set_updated_by_id
      before_destroy :set_updated_by_id

      belongs_to :updated_by, class_name: 'ZuoraConnect::ZuoraUser', foreign_key: 'updated_by_id', primary_key: "zuora_user_id", optional: true
      belongs_to :created_by, class_name: 'ZuoraConnect::ZuoraUser', foreign_key: 'created_by_id', primary_key: "zuora_user_id", optional: true

      private

      def set_created_by_id
        self.created_by_id = ZuoraUser.current_user_id if defined?(created_by_id)
      end

      def set_updated_by_id
        self.updated_by_id = ZuoraUser.current_user_id if defined?(updated_by_id)
      end
    end
  end
end