delta_changes 2.2.1 → 2.2.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 +4 -4
- data/lib/delta_changes.rb +49 -22
- data/lib/delta_changes/version.rb +1 -1
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: da863383cd4382362669bc42a36e7e0a361ac634d1bbad7448fb44b64468dcdc
|
4
|
+
data.tar.gz: d9d49ffcc2118d0bfe02fa47a2346486f28e938addc3d88f891e976be99f6e1f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7d1df5f621ad803e4d58da4f7ee2c7066d613ea71187706fe7b72861f490622f3b3234feb7c9c93c2d8cd919093dbc487deb16d5c7fb2a5c0ab86b555853e034
|
7
|
+
data.tar.gz: 928d3e1e59233443aa028903ed653f8143b690251108587a739a55d566d21f940c7b93ce009d852ac967b9584d52511494ae63074fa6ffb2eb54aaab2b0c332b
|
data/lib/delta_changes.rb
CHANGED
@@ -6,8 +6,11 @@ module DeltaChanges
|
|
6
6
|
base.extend(ClassMethods)
|
7
7
|
base.cattr_accessor :delta_changes_options
|
8
8
|
base.attribute_method_suffix '_delta_changed?', '_delta_change', '_delta_was', '_delta_will_change!'
|
9
|
-
|
10
|
-
|
9
|
+
if ::ActiveRecord.version < Gem::Version.new('5.2')
|
10
|
+
base.send(:prepend, InstanceMethodsLegacy)
|
11
|
+
else
|
12
|
+
base.send(:prepend, InstanceMethods)
|
13
|
+
end
|
11
14
|
end
|
12
15
|
|
13
16
|
module ClassMethods
|
@@ -42,6 +45,50 @@ module DeltaChanges
|
|
42
45
|
end
|
43
46
|
end
|
44
47
|
|
48
|
+
# Rails < 5.2
|
49
|
+
module InstanceMethodsLegacy
|
50
|
+
# Wrap write_attribute to remember original attribute value.
|
51
|
+
def write_attribute(attr, value)
|
52
|
+
attr = attr.to_s
|
53
|
+
|
54
|
+
unless self.class.delta_changes_options[:columns].include?(attr)
|
55
|
+
return super(attr, value)
|
56
|
+
end
|
57
|
+
|
58
|
+
# The attribute already has an unsaved change.
|
59
|
+
if delta_changed_attributes.include?(attr)
|
60
|
+
old = delta_changed_attributes[attr]
|
61
|
+
super(attr, value)
|
62
|
+
delta_changed_attributes.delete(attr) unless delta_changes_field_changed?(attr, old, value)
|
63
|
+
else
|
64
|
+
old = respond_to?(:clone_attribute_value) ? clone_attribute_value(:read_attribute, attr) : read_attribute(attr).dup
|
65
|
+
super(attr, value)
|
66
|
+
delta_changed_attributes[attr] = old if delta_changes_field_changed?(attr, old, value)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
module InstanceMethods
|
72
|
+
def _write_attribute(attr, value)
|
73
|
+
attr = attr.to_s
|
74
|
+
|
75
|
+
unless self.class.delta_changes_options[:columns].include?(attr)
|
76
|
+
return super(attr, value)
|
77
|
+
end
|
78
|
+
|
79
|
+
# The attribute already has an unsaved change.
|
80
|
+
if delta_changed_attributes.include?(attr)
|
81
|
+
old = delta_changed_attributes[attr]
|
82
|
+
super(attr, value)
|
83
|
+
delta_changed_attributes.delete(attr) unless delta_changes_field_changed?(attr, old, value)
|
84
|
+
else
|
85
|
+
old = read_attribute(attr).dup
|
86
|
+
super(attr, value)
|
87
|
+
delta_changed_attributes[attr] = old if delta_changes_field_changed?(attr, old, value)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
45
92
|
def delta_changes
|
46
93
|
delta_changed_attributes.keys.inject({}) { |h, attr| h[attr] = attribute_delta_change(attr); h }
|
47
94
|
end
|
@@ -89,26 +136,6 @@ module DeltaChanges
|
|
89
136
|
delta_changed_attributes[attr] = attribute_value
|
90
137
|
end
|
91
138
|
|
92
|
-
# Wrap write_attribute to remember original attribute value.
|
93
|
-
def write_attribute_with_delta_changes(attr, value)
|
94
|
-
attr = attr.to_s
|
95
|
-
|
96
|
-
unless self.class.delta_changes_options[:columns].include?(attr)
|
97
|
-
return write_attribute_without_delta_changes(attr, value)
|
98
|
-
end
|
99
|
-
|
100
|
-
# The attribute already has an unsaved change.
|
101
|
-
if delta_changed_attributes.include?(attr)
|
102
|
-
old = delta_changed_attributes[attr]
|
103
|
-
write_attribute_without_delta_changes(attr, value)
|
104
|
-
delta_changed_attributes.delete(attr) unless delta_changes_field_changed?(attr, old, value)
|
105
|
-
else
|
106
|
-
old = respond_to?(:clone_attribute_value) ? clone_attribute_value(:read_attribute, attr) : read_attribute(attr).dup
|
107
|
-
write_attribute_without_delta_changes(attr, value)
|
108
|
-
delta_changed_attributes[attr] = old if delta_changes_field_changed?(attr, old, value)
|
109
|
-
end
|
110
|
-
end
|
111
|
-
|
112
139
|
def delta_changes_field_changed?(attr, old, value)
|
113
140
|
return true if !old.present? && value.present?
|
114
141
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: delta_changes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.2.
|
4
|
+
version: 2.2.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michael Grosser
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-02-
|
11
|
+
date: 2021-02-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -19,7 +19,7 @@ dependencies:
|
|
19
19
|
version: 3.2.22
|
20
20
|
- - "<"
|
21
21
|
- !ruby/object:Gem::Version
|
22
|
-
version: '
|
22
|
+
version: '6.3'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -29,7 +29,7 @@ dependencies:
|
|
29
29
|
version: 3.2.22
|
30
30
|
- - "<"
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: '
|
32
|
+
version: '6.3'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: rake
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -87,7 +87,7 @@ dependencies:
|
|
87
87
|
- !ruby/object:Gem::Version
|
88
88
|
version: '0'
|
89
89
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
90
|
+
name: byebug
|
91
91
|
requirement: !ruby/object:Gem::Requirement
|
92
92
|
requirements:
|
93
93
|
- - ">="
|
@@ -101,7 +101,7 @@ dependencies:
|
|
101
101
|
- !ruby/object:Gem::Version
|
102
102
|
version: '0'
|
103
103
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
104
|
+
name: matching_bundle
|
105
105
|
requirement: !ruby/object:Gem::Requirement
|
106
106
|
requirements:
|
107
107
|
- - ">="
|