immosquare-active-record-change-tracker 0.1.1 → 0.1.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7c2d32963fc17f1c7ef7655b942f8e61beb136d1bd0811dbd6f3427df3c7d8ab
4
- data.tar.gz: b2302a16458ffe0595584fddbbc74e08e00e6271639a69ee04132ffcb3d01531
3
+ metadata.gz: bdf4dad2fc3d9058dad099ef5dd9fffff4a668a4d53ba4fa883ec646c5208c62
4
+ data.tar.gz: f395ee20c35136b578b73251de92ec388d389e3cc3f4cd3ee6147936645fa385
5
5
  SHA512:
6
- metadata.gz: 0afaaae031be8e2933b2a6575fa71cfdcd0f84ec5d522c1ad6d82ce0ee0e59e43d5236bb73e20c06416be5e1f839b5678abeea7cebe4471212c23822d91ead67
7
- data.tar.gz: d398dff8fc42d43d88c93736cb3f82639cf3696a940fa0a8e07a4a6109502bdea89b01081ca0b8a176330711d75ce7e31a3457d4a4860c059a8fb9917d8d9562
6
+ metadata.gz: 5bebb9b4525197085eceb6aab6d3de99d039ed77223a8fb98a3224ddca314c626134688b886e91d8e8445574ef67f2a50add1339adafac2e34582493655fd48a
7
+ data.tar.gz: 89aa7f67896f3a7ae5b05268786b5fa6e79169223bbc06165829df8e65259827ad5f4cb4b3d2e9966e2f2582eb6ab786c7d7cc6800b5f6fba73d7ea3e80549f9
@@ -1,3 +1,3 @@
1
1
  module ImmosquareActiveRecordChangeTracker
2
- VERSION = "0.1.1".freeze
2
+ VERSION = "0.1.2".freeze
3
3
  end
@@ -9,6 +9,13 @@ module ImmosquareActiveRecordChangeTracker
9
9
  extend ActiveSupport::Concern
10
10
 
11
11
  module ClassMethods
12
+ ##============================================================##
13
+ ## Can be improved with other gems like paranoia
14
+ ##============================================================##
15
+ def kept_in_db
16
+ respond_to?(:paranoia_column)
17
+ end
18
+
12
19
  def track_active_record_changes(options = {}, &modifier_block)
13
20
  ##============================================================##
14
21
  ## Inclut les méthodes d'instance nécessaires
@@ -16,13 +23,24 @@ module ImmosquareActiveRecordChangeTracker
16
23
  include(ImmosquareActiveRecordChangeTracker::InstanceMethods)
17
24
 
18
25
  ##============================================================##
19
- ## Ajout de l'association has_many :history_records
26
+ ## Construire dynamiquement les options de l'association
20
27
  ##============================================================##
21
- has_many(:history_records,
22
- -> { order(:created_at => :desc) },
28
+ association_options = {
23
29
  :as => :recordable,
24
- :class_name => "ImmosquareActiveRecordChangeTracker::HistoryRecord",
25
- :dependent => :destroy)
30
+ :class_name => "ImmosquareActiveRecordChangeTracker::HistoryRecord"
31
+ }
32
+
33
+ ##============================================================##
34
+ ## Ajouter :dependent => :destroy si acts_as_paranoid n'est pas utilisé
35
+ ## on se base sur paranoia_column car acts_as_paranoid répond true
36
+ ## sur tous les modèles du temps que la gem est incluse
37
+ ##============================================================##
38
+ association_options[:dependent] = :destroy if !kept_in_db
39
+
40
+ ##============================================================##
41
+ ## Ajout de l'association has_many :history_records
42
+ ##============================================================##
43
+ has_many(:history_records, -> { order(:created_at => :desc) }, **association_options)
26
44
 
27
45
  ##============================================================##
28
46
  ## Stocker les options dans un attribut de classe
@@ -46,6 +64,7 @@ module ImmosquareActiveRecordChangeTracker
46
64
  module InstanceMethods
47
65
  private
48
66
 
67
+
49
68
  ##============================================================##
50
69
  ## Stocker les changements après un create ou save ou update
51
70
  ##============================================================##
@@ -119,10 +138,13 @@ module ImmosquareActiveRecordChangeTracker
119
138
  end
120
139
 
121
140
  ##============================================================##
122
- ## Stocker l'événement destroy
123
- ## Pas besoin de data, rien n'a changé.
141
+ ## Stocker l'événement destroy que si la classe est paranoïaque
142
+ ## Si on supprime définitivement de la db, on ne stocke pas l'historique
143
+ ## de suppression
124
144
  ##============================================================##
125
145
  def delete_change_history
146
+ return if !self.class.kept_in_db
147
+
126
148
  ##============================================================##
127
149
  ## Récupéreration du modificateur en exécutant le bloc s'il est défini
128
150
  ##============================================================##
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: immosquare-active-record-change-tracker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
- - IMMO SQUARE
7
+ - immosquare
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-10-07 00:00:00.000000000 Z
11
+ date: 2024-10-14 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: A gem to track changes on ActiveRecord models
14
14
  email:
@@ -23,7 +23,7 @@ files:
23
23
  - lib/immosquare-active-record-change-tracker/models/history_record.rb
24
24
  - lib/immosquare-active-record-change-tracker/railtie.rb
25
25
  - lib/immosquare-active-record-change-tracker/version.rb
26
- homepage: https://github.com/IMMOSQUARE/immosquare-active-record-change-tracker
26
+ homepage: https://github.com/immosquare/immosquare-active-record-change-tracker
27
27
  licenses:
28
28
  - MIT
29
29
  metadata: {}
@@ -42,7 +42,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  requirements: []
45
- rubygems_version: 3.5.11
45
+ rubygems_version: 3.5.21
46
46
  signing_key:
47
47
  specification_version: 4
48
48
  summary: ActiveRecord Change Tracker