Module: Models::Auditable
- Extended by:
- ActiveSupport::Concern
- Included in:
- Account, Activity, ActivityAgenda, ActivityChainType, ActivityResultType, ActivityType, ActivityTypeAssignmentQueue, ActivityTypeRule, AdditionalCallCredit, Address, Agreement, AgreementParticipant, AmazonAPlusContent, AmazonSchema, AmazonTransparencyCode, Article, ArticlePage, ArticleRevision, AssignmentQueue, AssortmentInstruction, Authentication, AverageMonthlyTemperature, Bank, BankAccount, BankBalanceStatement, Budget, BudgetGroup, BudgetRule, BusinessUnit, BuyingGroup, CallBlock, CallRecord, Campaign, CampaignAction, CarrierPickup, Catalog, CatalogItem, Ceiling, CeilingInsulationType, CeilingType, Certification, Charity, Check, CommissionRate, CommissionStructure, CommissionStructureEntry, CommissionTier, Communication, CommunicationRecipient, Company, ContactPoint, Coupon, CouponSerialNumber, Course, CourseCategory, CourseEnrollment, CreditApplication, CreditCardVault, CreditMemo, CustomerDropEvent, CustomerFilter, CustomerRecord, CycleCount, DataDictionarySet, Delivery, DesignToolFixture, DigitalAsset, Discount, DoNotCall, DoorCoreType, DoorFrameType, DoorInsulationType, DoorType, EdiCommunicationLog, ElementPoleAssignment, EmailPreference, EmailTemplate, EmployeeEvent, EmployeeGoal, EmployeePhoneStatus, EmployeeRecord, EmployeeReview, ExchangeRate, ExportedCatalogItemPacket, Facet, Feed, FloorPlanDisplay, FraudReport, HeatingElementProductLineOption, IdentificationNumber, ImageProfile, InventoryCommit, Invoice, Item, ItemDemandForecastAddition, ItemProductLine, ItemRelation, Kpi, LandedCost, LedgerAccount, LedgerBeginningBalance, LedgerClosingPeriod, LedgerCompanyAccount, LedgerDetailAccount, LedgerDetailProject, LedgerEntry, LedgerProject, LedgerTransaction, LiabilityInsurance, LineItem, LiveEvent, LocatorBlackListParty, LocatorRecord, LocatorWhiteListParty, MailActivity, Mailing, Manifest, NotificationChannel, OauthCredential, Opportunity, Order, OrderTransaction, OutgoingPayment, OutgoingPaymentItem, Packaging, Packing, Party, PartyTopic, Payment, PostComment, Praise, PriceThreshold, ProductCategory, ProductFilter, ProductLine, ProductSpecification, Profile, PublicationItem, PurchaseOrder, PurchaseOrderItem, PurchaseOrderShipment, QuickEstimator, Quote, Receipt, ReceiptDetail, Rma, RmaItem, SalesCommission, SalesCommissionNetBase, SalesCommissionNetBaseDetail, SalesForecast, SalesGoal, SalesRepQueue, SalesRepQueueEntry, SalesRepWeight, SerialNumber, ServiceJob, Setting, Shipment, ShipmentItem, ShipmentReceipt, ShipmentReceiptItem, ShippingAccountNumber, Showcase, Skylight, SmsMessage, Source, Spiff, SpiffEnrollment, SpiffReward, SpiffRewardThreshold, SqlRepo, StandaloneDelivery, StatementOfAccount, Store, StoreItem, StoreTransfer, Subscriber, SubscriberList, Supplier, SupplierItem, SupplierItemPrice, SupportCase, SupportCaseParticipant, Survey, TaxExemption, TaxRate, TimeOffBalance, TimeOffPolicy, TimeOffPolicyAssignment, TimeOffRequest, TimeOffRequestDate, TimeOffType, Topic, TopicCategory, TopicResponse, TradeShow, UnderFloor, Upload, VariableCost, Voucher, VoucherItem, WarehousePackage, WayfairSchema, Window, WorkSchedule, WorkScheduleDay, XrateAverage, Zone
- Defined in:
- app/concerns/models/auditable.rb
Defined Under Namespace
Modules: ClassMethods
Constant Summary collapse
- ALWAYS_IGNORED =
%i[updated_at created_at creator_id updater_id search_text_tsvector].freeze
Belongs to collapse
Instance Method Summary collapse
- #all_skipped_columns ⇒ Object
- #audit_reference_data ⇒ Object
- #should_not_save_version ⇒ Object
- #stamp_record ⇒ Object
Instance Method Details
#all_skipped_columns ⇒ Object
46 47 48 |
# File 'app/concerns/models/auditable.rb', line 46 def all_skipped_columns (self.class.skipped_columns || []) + ALWAYS_IGNORED end |
#audit_reference_data ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 |
# File 'app/concerns/models/auditable.rb', line 54 def audit_reference_data model_data = if self.class.reference_data.present? self.class.reference_data.index_with { |e| try(e) }.compact else {} end # Merge request-level context (e.g. Sunny conversation metadata) # set via PaperTrail.request.controller_info in background workers. request_ctx = PaperTrail.request.controller_info || {} merged = model_data.merge(request_ctx) merged.presence end |
#creator ⇒ Party
18 |
# File 'app/concerns/models/auditable.rb', line 18 belongs_to :creator, class_name: 'Party', optional: true |
#should_not_save_version ⇒ Object
50 51 52 |
# File 'app/concerns/models/auditable.rb', line 50 def should_not_save_version !PaperTrail.enabled? && changes.keys.all? { |k| k.to_sym.in?(all_skipped_columns) } end |
#stamp_record ⇒ Object
38 39 40 41 42 43 44 |
# File 'app/concerns/models/auditable.rb', line 38 def stamp_record user_id = CurrentScope.user_id visit_id = CurrentScope.visit_id self.creator_id ||= user_id if respond_to? :creator_id= self.updater_id = user_id if respond_to? :updater_id= self.visit_id ||= visit_id if respond_to? :visit_id= end |
#updater ⇒ Party
19 |
# File 'app/concerns/models/auditable.rb', line 19 belongs_to :updater, class_name: 'Party', optional: true |