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

Sign up to get free protection for your applications and to get access to all the features.
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