paper_trail 5.2.3 → 11.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (198) hide show
  1. checksums.yaml +5 -5
  2. data/lib/generators/paper_trail/install/USAGE +3 -0
  3. data/lib/generators/paper_trail/install/install_generator.rb +75 -0
  4. data/lib/generators/paper_trail/{templates/add_object_changes_to_versions.rb → install/templates/add_object_changes_to_versions.rb.erb} +1 -1
  5. data/lib/generators/paper_trail/install/templates/create_versions.rb.erb +36 -0
  6. data/lib/generators/paper_trail/migration_generator.rb +38 -0
  7. data/lib/generators/paper_trail/update_item_subtype/USAGE +4 -0
  8. data/lib/generators/paper_trail/update_item_subtype/templates/update_versions_for_item_subtype.rb.erb +85 -0
  9. data/lib/generators/paper_trail/update_item_subtype/update_item_subtype_generator.rb +17 -0
  10. data/lib/paper_trail.rb +82 -130
  11. data/lib/paper_trail/attribute_serializers/attribute_serializer_factory.rb +27 -0
  12. data/lib/paper_trail/attribute_serializers/cast_attribute_serializer.rb +15 -44
  13. data/lib/paper_trail/attribute_serializers/object_attribute.rb +2 -0
  14. data/lib/paper_trail/attribute_serializers/object_changes_attribute.rb +2 -0
  15. data/lib/paper_trail/cleaner.rb +3 -1
  16. data/lib/paper_trail/compatibility.rb +51 -0
  17. data/lib/paper_trail/config.rb +11 -49
  18. data/lib/paper_trail/events/base.rb +323 -0
  19. data/lib/paper_trail/events/create.rb +32 -0
  20. data/lib/paper_trail/events/destroy.rb +42 -0
  21. data/lib/paper_trail/events/update.rb +60 -0
  22. data/lib/paper_trail/frameworks/active_record.rb +2 -1
  23. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version.rb +8 -3
  24. data/lib/paper_trail/frameworks/cucumber.rb +5 -3
  25. data/lib/paper_trail/frameworks/rails.rb +2 -0
  26. data/lib/paper_trail/frameworks/rails/controller.rb +33 -43
  27. data/lib/paper_trail/frameworks/rails/engine.rb +34 -1
  28. data/lib/paper_trail/frameworks/rspec.rb +17 -4
  29. data/lib/paper_trail/frameworks/rspec/helpers.rb +2 -0
  30. data/lib/paper_trail/has_paper_trail.rb +22 -310
  31. data/lib/paper_trail/model_config.rb +157 -109
  32. data/lib/paper_trail/queries/versions/where_object.rb +65 -0
  33. data/lib/paper_trail/queries/versions/where_object_changes.rb +75 -0
  34. data/lib/paper_trail/record_history.rb +3 -9
  35. data/lib/paper_trail/record_trail.rb +169 -319
  36. data/lib/paper_trail/reifier.rb +53 -374
  37. data/lib/paper_trail/request.rb +166 -0
  38. data/lib/paper_trail/serializers/json.rb +9 -10
  39. data/lib/paper_trail/serializers/yaml.rb +15 -28
  40. data/lib/paper_trail/type_serializers/postgres_array_serializer.rb +48 -0
  41. data/lib/paper_trail/version_concern.rb +160 -155
  42. data/lib/paper_trail/version_number.rb +12 -4
  43. metadata +77 -372
  44. data/.github/CONTRIBUTING.md +0 -109
  45. data/.github/ISSUE_TEMPLATE.md +0 -13
  46. data/.gitignore +0 -23
  47. data/.rspec +0 -2
  48. data/.rubocop.yml +0 -99
  49. data/.rubocop_todo.yml +0 -22
  50. data/.travis.yml +0 -41
  51. data/Appraisals +0 -38
  52. data/CHANGELOG.md +0 -560
  53. data/Gemfile +0 -2
  54. data/MIT-LICENSE +0 -20
  55. data/README.md +0 -1654
  56. data/Rakefile +0 -30
  57. data/doc/bug_report_template.rb +0 -69
  58. data/doc/warning_about_not_setting_whodunnit.md +0 -32
  59. data/gemfiles/ar3.gemfile +0 -19
  60. data/gemfiles/ar4.gemfile +0 -8
  61. data/gemfiles/ar5.gemfile +0 -9
  62. data/lib/generators/paper_trail/USAGE +0 -2
  63. data/lib/generators/paper_trail/default_initializer.rb +0 -0
  64. data/lib/generators/paper_trail/install_generator.rb +0 -57
  65. data/lib/generators/paper_trail/templates/add_transaction_id_column_to_versions.rb +0 -13
  66. data/lib/generators/paper_trail/templates/create_version_associations.rb +0 -22
  67. data/lib/generators/paper_trail/templates/create_versions.rb +0 -80
  68. data/lib/paper_trail/attribute_serializers/legacy_active_record_shim.rb +0 -48
  69. data/lib/paper_trail/frameworks/active_record/models/paper_trail/version_association.rb +0 -11
  70. data/lib/paper_trail/frameworks/sinatra.rb +0 -40
  71. data/lib/paper_trail/version_association_concern.rb +0 -17
  72. data/paper_trail.gemspec +0 -56
  73. data/spec/generators/install_generator_spec.rb +0 -66
  74. data/spec/generators/paper_trail/templates/create_versions_spec.rb +0 -51
  75. data/spec/models/animal_spec.rb +0 -36
  76. data/spec/models/boolit_spec.rb +0 -48
  77. data/spec/models/callback_modifier_spec.rb +0 -96
  78. data/spec/models/car_spec.rb +0 -13
  79. data/spec/models/custom_primary_key_record_spec.rb +0 -18
  80. data/spec/models/fluxor_spec.rb +0 -17
  81. data/spec/models/gadget_spec.rb +0 -68
  82. data/spec/models/joined_version_spec.rb +0 -47
  83. data/spec/models/json_version_spec.rb +0 -102
  84. data/spec/models/kitchen/banana_spec.rb +0 -14
  85. data/spec/models/not_on_update_spec.rb +0 -22
  86. data/spec/models/post_with_status_spec.rb +0 -50
  87. data/spec/models/skipper_spec.rb +0 -46
  88. data/spec/models/thing_spec.rb +0 -11
  89. data/spec/models/truck_spec.rb +0 -5
  90. data/spec/models/vehicle_spec.rb +0 -5
  91. data/spec/models/version_spec.rb +0 -272
  92. data/spec/models/widget_spec.rb +0 -343
  93. data/spec/modules/paper_trail_spec.rb +0 -27
  94. data/spec/modules/version_concern_spec.rb +0 -31
  95. data/spec/modules/version_number_spec.rb +0 -43
  96. data/spec/paper_trail/config_spec.rb +0 -33
  97. data/spec/paper_trail_spec.rb +0 -79
  98. data/spec/rails_helper.rb +0 -34
  99. data/spec/requests/articles_spec.rb +0 -34
  100. data/spec/spec_helper.rb +0 -114
  101. data/spec/support/alt_db_init.rb +0 -54
  102. data/test/custom_json_serializer.rb +0 -13
  103. data/test/dummy/Rakefile +0 -7
  104. data/test/dummy/app/controllers/application_controller.rb +0 -33
  105. data/test/dummy/app/controllers/articles_controller.rb +0 -20
  106. data/test/dummy/app/controllers/test_controller.rb +0 -5
  107. data/test/dummy/app/controllers/widgets_controller.rb +0 -32
  108. data/test/dummy/app/helpers/application_helper.rb +0 -2
  109. data/test/dummy/app/models/animal.rb +0 -6
  110. data/test/dummy/app/models/article.rb +0 -24
  111. data/test/dummy/app/models/authorship.rb +0 -5
  112. data/test/dummy/app/models/bar_habtm.rb +0 -4
  113. data/test/dummy/app/models/book.rb +0 -9
  114. data/test/dummy/app/models/boolit.rb +0 -4
  115. data/test/dummy/app/models/callback_modifier.rb +0 -45
  116. data/test/dummy/app/models/car.rb +0 -3
  117. data/test/dummy/app/models/cat.rb +0 -2
  118. data/test/dummy/app/models/chapter.rb +0 -9
  119. data/test/dummy/app/models/citation.rb +0 -5
  120. data/test/dummy/app/models/custom_primary_key_record.rb +0 -13
  121. data/test/dummy/app/models/customer.rb +0 -4
  122. data/test/dummy/app/models/document.rb +0 -4
  123. data/test/dummy/app/models/dog.rb +0 -2
  124. data/test/dummy/app/models/editor.rb +0 -4
  125. data/test/dummy/app/models/editorship.rb +0 -5
  126. data/test/dummy/app/models/elephant.rb +0 -3
  127. data/test/dummy/app/models/fluxor.rb +0 -3
  128. data/test/dummy/app/models/foo_habtm.rb +0 -5
  129. data/test/dummy/app/models/foo_widget.rb +0 -2
  130. data/test/dummy/app/models/fruit.rb +0 -5
  131. data/test/dummy/app/models/gadget.rb +0 -3
  132. data/test/dummy/app/models/kitchen/banana.rb +0 -5
  133. data/test/dummy/app/models/legacy_widget.rb +0 -4
  134. data/test/dummy/app/models/line_item.rb +0 -4
  135. data/test/dummy/app/models/not_on_update.rb +0 -4
  136. data/test/dummy/app/models/order.rb +0 -5
  137. data/test/dummy/app/models/paragraph.rb +0 -5
  138. data/test/dummy/app/models/person.rb +0 -38
  139. data/test/dummy/app/models/post.rb +0 -3
  140. data/test/dummy/app/models/post_with_status.rb +0 -8
  141. data/test/dummy/app/models/protected_widget.rb +0 -3
  142. data/test/dummy/app/models/quotation.rb +0 -5
  143. data/test/dummy/app/models/section.rb +0 -6
  144. data/test/dummy/app/models/skipper.rb +0 -6
  145. data/test/dummy/app/models/song.rb +0 -41
  146. data/test/dummy/app/models/thing.rb +0 -3
  147. data/test/dummy/app/models/translation.rb +0 -4
  148. data/test/dummy/app/models/truck.rb +0 -4
  149. data/test/dummy/app/models/vehicle.rb +0 -4
  150. data/test/dummy/app/models/whatchamajigger.rb +0 -4
  151. data/test/dummy/app/models/widget.rb +0 -16
  152. data/test/dummy/app/models/wotsit.rb +0 -8
  153. data/test/dummy/app/versions/custom_primary_key_record_version.rb +0 -3
  154. data/test/dummy/app/versions/joined_version.rb +0 -6
  155. data/test/dummy/app/versions/json_version.rb +0 -3
  156. data/test/dummy/app/versions/kitchen/banana_version.rb +0 -5
  157. data/test/dummy/app/versions/post_version.rb +0 -3
  158. data/test/dummy/app/views/layouts/application.html.erb +0 -14
  159. data/test/dummy/config.ru +0 -4
  160. data/test/dummy/config/application.rb +0 -80
  161. data/test/dummy/config/boot.rb +0 -10
  162. data/test/dummy/config/database.mysql.yml +0 -19
  163. data/test/dummy/config/database.postgres.yml +0 -15
  164. data/test/dummy/config/database.sqlite.yml +0 -15
  165. data/test/dummy/config/environment.rb +0 -5
  166. data/test/dummy/config/environments/development.rb +0 -41
  167. data/test/dummy/config/environments/production.rb +0 -74
  168. data/test/dummy/config/environments/test.rb +0 -51
  169. data/test/dummy/config/initializers/backtrace_silencers.rb +0 -9
  170. data/test/dummy/config/initializers/inflections.rb +0 -10
  171. data/test/dummy/config/initializers/mime_types.rb +0 -5
  172. data/test/dummy/config/initializers/paper_trail.rb +0 -9
  173. data/test/dummy/config/initializers/secret_token.rb +0 -9
  174. data/test/dummy/config/initializers/session_store.rb +0 -8
  175. data/test/dummy/config/locales/en.yml +0 -5
  176. data/test/dummy/config/routes.rb +0 -4
  177. data/test/dummy/db/migrate/20110208155312_set_up_test_tables.rb +0 -361
  178. data/test/dummy/db/schema.rb +0 -288
  179. data/test/dummy/script/rails +0 -8
  180. data/test/functional/controller_test.rb +0 -90
  181. data/test/functional/enabled_for_controller_test.rb +0 -28
  182. data/test/functional/modular_sinatra_test.rb +0 -46
  183. data/test/functional/sinatra_test.rb +0 -51
  184. data/test/functional/thread_safety_test.rb +0 -46
  185. data/test/test_helper.rb +0 -127
  186. data/test/time_travel_helper.rb +0 -1
  187. data/test/unit/associations_test.rb +0 -1016
  188. data/test/unit/cleaner_test.rb +0 -188
  189. data/test/unit/inheritance_column_test.rb +0 -43
  190. data/test/unit/model_test.rb +0 -1489
  191. data/test/unit/protected_attrs_test.rb +0 -52
  192. data/test/unit/serializer_test.rb +0 -119
  193. data/test/unit/serializers/json_test.rb +0 -95
  194. data/test/unit/serializers/mixin_json_test.rb +0 -37
  195. data/test/unit/serializers/mixin_yaml_test.rb +0 -53
  196. data/test/unit/serializers/yaml_test.rb +0 -54
  197. data/test/unit/timestamp_test.rb +0 -41
  198. data/test/unit/version_test.rb +0 -119
@@ -1,24 +0,0 @@
1
- class Article < ActiveRecord::Base
2
- has_paper_trail(
3
- ignore: [
4
- :title, {
5
- abstract: proc { |obj|
6
- ["ignore abstract", "Other abstract"].include? obj.abstract
7
- }
8
- }
9
- ],
10
- only: [:content, { abstract: proc { |obj| obj.abstract.present? } }],
11
- skip: [:file_upload],
12
- meta: {
13
- answer: 42,
14
- action: :action_data_provider_method,
15
- question: proc { "31 + 11 = #{31 + 11}" },
16
- article_id: proc { |article| article.id },
17
- title: :title
18
- }
19
- )
20
-
21
- def action_data_provider_method
22
- object_id.to_s
23
- end
24
- end
@@ -1,5 +0,0 @@
1
- class Authorship < ActiveRecord::Base
2
- belongs_to :book
3
- belongs_to :author, class_name: "Person"
4
- has_paper_trail
5
- end
@@ -1,4 +0,0 @@
1
- class BarHabtm < ActiveRecord::Base
2
- has_and_belongs_to_many :foo_habtms
3
- has_paper_trail
4
- end
@@ -1,9 +0,0 @@
1
- class Book < ActiveRecord::Base
2
- has_many :authorships, dependent: :destroy
3
- has_many :authors, through: :authorships
4
-
5
- has_many :editorships, dependent: :destroy
6
- has_many :editors, through: :editorships
7
-
8
- has_paper_trail
9
- end
@@ -1,4 +0,0 @@
1
- class Boolit < ActiveRecord::Base
2
- default_scope { where(scoped: true) }
3
- has_paper_trail
4
- end
@@ -1,45 +0,0 @@
1
- class CallbackModifier < ActiveRecord::Base
2
- has_paper_trail on: []
3
-
4
- def test_destroy
5
- transaction do
6
- run_callbacks(:destroy) do
7
- self.deleted = true
8
- save!
9
- end
10
- end
11
- end
12
-
13
- def flagged_deleted?
14
- deleted?
15
- end
16
- end
17
-
18
- class BeforeDestroyModifier < CallbackModifier
19
- has_paper_trail on: []
20
- paper_trail.on_destroy :before
21
- end
22
-
23
- class AfterDestroyModifier < CallbackModifier
24
- has_paper_trail on: []
25
- paper_trail.on_destroy :after
26
- end
27
-
28
- class NoArgDestroyModifier < CallbackModifier
29
- has_paper_trail on: []
30
- paper_trail.on_destroy
31
- end
32
-
33
- class UpdateModifier < CallbackModifier
34
- has_paper_trail on: []
35
- paper_trail.on_update
36
- end
37
-
38
- class CreateModifier < CallbackModifier
39
- has_paper_trail on: []
40
- paper_trail.on_create
41
- end
42
-
43
- class DefaultModifier < CallbackModifier
44
- has_paper_trail
45
- end
@@ -1,3 +0,0 @@
1
- class Car < Vehicle
2
- has_paper_trail
3
- end
@@ -1,2 +0,0 @@
1
- class Cat < Animal
2
- end
@@ -1,9 +0,0 @@
1
- class Chapter < ActiveRecord::Base
2
- has_many :sections, dependent: :destroy
3
- has_many :paragraphs, through: :sections
4
-
5
- has_many :quotations, dependent: :destroy
6
- has_many :citations, through: :quotations
7
-
8
- has_paper_trail
9
- end
@@ -1,5 +0,0 @@
1
- class Citation < ActiveRecord::Base
2
- belongs_to :quotation
3
-
4
- has_paper_trail
5
- end
@@ -1,13 +0,0 @@
1
- require "securerandom"
2
- class CustomPrimaryKeyRecord < ActiveRecord::Base
3
- self.primary_key = :uuid
4
-
5
- has_paper_trail class_name: "CustomPrimaryKeyRecordVersion"
6
- # this unusual default_scope is to test the case of the Version#item association
7
- # not returning the item due to unmatched default_scope on the model.
8
- default_scope -> { where(name: "custom_primary_key_record") }
9
-
10
- before_create do
11
- self.uuid ||= SecureRandom.uuid
12
- end
13
- end
@@ -1,4 +0,0 @@
1
- class Customer < ActiveRecord::Base
2
- has_many :orders, dependent: :destroy
3
- has_paper_trail
4
- end
@@ -1,4 +0,0 @@
1
- class Document < ActiveRecord::Base
2
- has_paper_trail versions: :paper_trail_versions,
3
- on: [:create, :update]
4
- end
@@ -1,2 +0,0 @@
1
- class Dog < Animal
2
- end
@@ -1,4 +0,0 @@
1
- # to demonstrate a has_through association that does not have paper_trail enabled
2
- class Editor < ActiveRecord::Base
3
- has_many :editorships, dependent: :destroy
4
- end
@@ -1,5 +0,0 @@
1
- class Editorship < ActiveRecord::Base
2
- belongs_to :book
3
- belongs_to :editor
4
- has_paper_trail
5
- end
@@ -1,3 +0,0 @@
1
- class Elephant < Animal
2
- paper_trail.disable
3
- end
@@ -1,3 +0,0 @@
1
- class Fluxor < ActiveRecord::Base
2
- belongs_to :widget
3
- end
@@ -1,5 +0,0 @@
1
- class FooHabtm < ActiveRecord::Base
2
- has_and_belongs_to_many :bar_habtms
3
- accepts_nested_attributes_for :bar_habtms
4
- has_paper_trail
5
- end
@@ -1,2 +0,0 @@
1
- class FooWidget < Widget
2
- end
@@ -1,5 +0,0 @@
1
- class Fruit < ActiveRecord::Base
2
- if ENV["DB"] == "postgres" || JsonVersion.table_exists?
3
- has_paper_trail class_name: "JsonVersion"
4
- end
5
- end
@@ -1,3 +0,0 @@
1
- class Gadget < ActiveRecord::Base
2
- has_paper_trail ignore: :brand
3
- end
@@ -1,5 +0,0 @@
1
- module Kitchen
2
- class Banana < ActiveRecord::Base
3
- has_paper_trail class_name: "Kitchen::BananaVersion"
4
- end
5
- end
@@ -1,4 +0,0 @@
1
- class LegacyWidget < ActiveRecord::Base
2
- has_paper_trail ignore: :version,
3
- version: "custom_version"
4
- end
@@ -1,4 +0,0 @@
1
- class LineItem < ActiveRecord::Base
2
- belongs_to :order, dependent: :destroy
3
- has_paper_trail
4
- end
@@ -1,4 +0,0 @@
1
- # This model does not record versions when updated.
2
- class NotOnUpdate < ActiveRecord::Base
3
- has_paper_trail on: [:create, :destroy]
4
- end
@@ -1,5 +0,0 @@
1
- class Order < ActiveRecord::Base
2
- belongs_to :customer
3
- has_many :line_items
4
- has_paper_trail
5
- end
@@ -1,5 +0,0 @@
1
- class Paragraph < ActiveRecord::Base
2
- belongs_to :section
3
-
4
- has_paper_trail
5
- end
@@ -1,38 +0,0 @@
1
- class Person < ActiveRecord::Base
2
- has_many :authorships, foreign_key: :author_id, dependent: :destroy
3
- has_many :books, through: :authorships
4
- has_paper_trail
5
-
6
- # Convert strings to TimeZone objects when assigned
7
- def time_zone=(value)
8
- if value.is_a? ActiveSupport::TimeZone
9
- super
10
- else
11
- zone = ::Time.find_zone(value) # nil if can't find time zone
12
- super zone
13
- end
14
- end
15
-
16
- # Store TimeZone objects as strings when serialized to database
17
- class TimeZoneSerializer
18
- class << self
19
- def dump(zone)
20
- zone.try(:name)
21
- end
22
-
23
- def load(value)
24
- ::Time.find_zone(value)
25
- end
26
- end
27
-
28
- def dump(zone)
29
- self.class.dump(zone)
30
- end
31
-
32
- def load(value)
33
- self.class.load(value)
34
- end
35
- end
36
-
37
- serialize :time_zone, TimeZoneSerializer.new
38
- end
@@ -1,3 +0,0 @@
1
- class Post < ActiveRecord::Base
2
- has_paper_trail class_name: "PostVersion"
3
- end
@@ -1,8 +0,0 @@
1
- class PostWithStatus < ActiveRecord::Base
2
- has_paper_trail
3
-
4
- # ActiveRecord::Enum is only supported in AR4.1+
5
- if defined?(ActiveRecord::Enum)
6
- enum status: { draft: 0, published: 1, archived: 2 }
7
- end
8
- end
@@ -1,3 +0,0 @@
1
- class ProtectedWidget < Widget
2
- attr_accessible :name, :a_text if ::PaperTrail.active_record_protected_attributes?
3
- end
@@ -1,5 +0,0 @@
1
- class Quotation < ActiveRecord::Base
2
- belongs_to :chapter
3
- has_many :citations, dependent: :destroy
4
- has_paper_trail
5
- end
@@ -1,6 +0,0 @@
1
- class Section < ActiveRecord::Base
2
- belongs_to :chapter
3
- has_many :paragraphs, dependent: :destroy
4
-
5
- has_paper_trail
6
- end
@@ -1,6 +0,0 @@
1
- class Skipper < ActiveRecord::Base
2
- has_paper_trail(
3
- ignore: [:created_at],
4
- skip: [:another_timestamp]
5
- )
6
- end
@@ -1,41 +0,0 @@
1
- # Example from 'Overwriting default accessors' in ActiveRecord::Base.
2
- class Song < ActiveRecord::Base
3
- has_paper_trail
4
- attr_accessor :name
5
-
6
- # Uses an integer of seconds to hold the length of the song
7
- def length=(minutes)
8
- write_attribute(:length, minutes.to_i * 60)
9
- end
10
-
11
- def length
12
- read_attribute(:length) / 60
13
- end
14
-
15
- # override attributes hashes like some libraries do
16
- def attributes_with_name
17
- if name
18
- attributes_without_name.merge(name: name)
19
- else
20
- attributes_without_name
21
- end
22
- end
23
-
24
- # `alias_method_chain` is deprecated in rails 5, but we cannot use the
25
- # suggested replacement, `Module#prepend`, because we still support ruby 1.9.
26
- alias attributes_without_name attributes
27
- alias attributes attributes_with_name
28
-
29
- def changed_attributes_with_name
30
- if name
31
- changed_attributes_without_name.merge(name: name)
32
- else
33
- changed_attributes_without_name
34
- end
35
- end
36
-
37
- # `alias_method_chain` is deprecated in rails 5, but we cannot use the
38
- # suggested replacement, `Module#prepend`, because we still support ruby 1.9.
39
- alias changed_attributes_without_name changed_attributes
40
- alias changed_attributes changed_attributes_with_name
41
- end
@@ -1,3 +0,0 @@
1
- class Thing < ActiveRecord::Base
2
- has_paper_trail save_changes: false
3
- end
@@ -1,4 +0,0 @@
1
- class Translation < ActiveRecord::Base
2
- has_paper_trail if: proc { |t| t.language_code == "US" },
3
- unless: proc { |t| t.type == "DRAFT" }
4
- end
@@ -1,4 +0,0 @@
1
- class Truck < Vehicle
2
- # This STI child class specifically does not call `has_paper_trail`.
3
- # Of the sub-classes of `Vehicle`, only `Car` is versioned.
4
- end
@@ -1,4 +0,0 @@
1
- class Vehicle < ActiveRecord::Base
2
- # This STI parent class specifically does not call `has_paper_trail`.
3
- # Of the sub-classes of `Vehicle`, only `Car` is versioned.
4
- end
@@ -1,4 +0,0 @@
1
- class Whatchamajigger < ActiveRecord::Base
2
- has_paper_trail
3
- belongs_to :owner, polymorphic: true
4
- end
@@ -1,16 +0,0 @@
1
- class Widget < ActiveRecord::Base
2
- has_paper_trail
3
- has_one :wotsit
4
- has_many :whatchamajiggers, as: :owner
5
-
6
- EXCLUDED_NAME = "Biglet".freeze
7
-
8
- validates :name, exclusion: { in: [EXCLUDED_NAME] }
9
-
10
- # `has_many` syntax for specifying order uses a lambda in Rails 4
11
- if ::ActiveRecord::VERSION::MAJOR >= 4
12
- has_many :fluxors, -> { order(:name) }
13
- else
14
- has_many :fluxors, order: :name
15
- end
16
- end
@@ -1,8 +0,0 @@
1
- class Wotsit < ActiveRecord::Base
2
- has_paper_trail
3
- belongs_to :widget
4
-
5
- def created_on
6
- created_at.to_date
7
- end
8
- end
@@ -1,3 +0,0 @@
1
- class CustomPrimaryKeyRecordVersion < PaperTrail::Version
2
- self.table_name = "custom_primary_key_record_versions"
3
- end
@@ -1,6 +0,0 @@
1
- # The purpose of this custom version class is to test the scope methods on the
2
- # VersionConcern::ClassMethods module. See
3
- # https://github.com/airblade/paper_trail/issues/295 for more details.
4
- class JoinedVersion < PaperTrail::Version
5
- default_scope { joins("INNER JOIN widgets ON widgets.id = versions.item_id") }
6
- end
@@ -1,3 +0,0 @@
1
- class JsonVersion < PaperTrail::Version
2
- self.table_name = "json_versions"
3
- end
@@ -1,5 +0,0 @@
1
- module Kitchen
2
- class BananaVersion < PaperTrail::Version
3
- self.table_name = "banana_versions"
4
- end
5
- end