File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -13,8 +13,9 @@ class Destroy < Base
1313 # @api private
1414 def data
1515 data = {
16- item_id : @record . id ,
17- item_type : @record . class . base_class . name ,
16+ # Keep destroy aligned with create/update so Rails resolves
17+ # `item_type` via the polymorphic association.
18+ item : @record ,
1819 event : @record . paper_trail_event || "destroy" ,
1920 whodunnit : PaperTrail . request . whodunnit
2021 }
Original file line number Diff line number Diff line change 22
33require "spec_helper"
44
5+ # Regression fixture for overridden polymorphic type names.
6+ module PolymorphicNameOverride
7+ class Widget < ApplicationRecord
8+ self . table_name = "widgets"
9+ has_paper_trail
10+
11+ def self . polymorphic_name
12+ "Widget"
13+ end
14+ end
15+ end
16+
517module PaperTrail
618 module Events
719 ::RSpec . describe Destroy do
@@ -12,10 +24,22 @@ module Events
1224 path_to_stardom : "Mexican radio"
1325 )
1426 data = described_class . new ( carter , true ) . data
15- expect ( data [ :item_type ] ) . to eq ( "Family::Family" )
27+ version = PaperTrail ::Version . new ( data )
28+ expect ( data [ :item ] ) . to eq ( carter )
29+ expect ( version . item_type ) . to eq ( "Family::Family" )
1630 expect ( data [ :item_subtype ] ) . to eq ( "Family::CelebrityFamily" )
1731 end
1832
33+ # Destroy versions should respect `polymorphic_name` just like create/update.
34+ it "uses polymorphic_name for destroy versions" do
35+ widget = PolymorphicNameOverride ::Widget . create! ( name : "Henry" )
36+ widget . update! ( name : "Harry" )
37+ widget . destroy
38+
39+ expect ( widget . versions . pluck ( :event ) ) . to eq ( %w[ create update destroy ] )
40+ expect ( widget . versions . pluck ( :item_type ) . uniq ) . to eq ( [ "Widget" ] )
41+ end
42+
1943 context "with skipper" do
2044 let ( :skipper ) { Skipper . create! ( another_timestamp : Time . current ) }
2145 let ( :data ) { described_class . new ( skipper , false ) . data }
You can’t perform that action at this time.
0 commit comments