activerecord-virtual_attributes 1.2.0 → 1.3.0
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5fe283d7922a8073591f5c00728e976c3c7ed2ec9dbe51972224b35f55095498
|
4
|
+
data.tar.gz: ec6c34d345f4ecf01a48d53f266f13b0b91b2a8e87d72c5b5cffffcda6101c36
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 96bfd6336c293999b0aa436b9d63067a7fb50effb8ac8c4bf17a151b80233765dbff782507546053e62e10e5dd49fa64a70d92cb6a47e0acd0cef2c0ff7c5991
|
7
|
+
data.tar.gz: c0bbca8dc201efcb927e35e2dc45b39c626a3e81842366b89500b5ca7007a49caa5dee922efd394b987da2f04cd638af03d9573a2fd3df792e8d27f462239770
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,10 @@ a nice looking [Changelog](http://keepachangelog.com).
|
|
5
5
|
|
6
6
|
## Version [Unreleased]
|
7
7
|
|
8
|
+
## Version [1.3.0] <small>2019-05-24</small>
|
9
|
+
|
10
|
+
* Rails 5.2 support
|
11
|
+
|
8
12
|
## Version [1.2.0] <small>2019-04-23</small>
|
9
13
|
|
10
14
|
* Virtual_delegate :type now specified to avoid rare race conditions with attribute discovery
|
@@ -30,7 +34,8 @@ a nice looking [Changelog](http://keepachangelog.com).
|
|
30
34
|
* Initial Release
|
31
35
|
* Extracted from ManageIQ/manageiq
|
32
36
|
|
33
|
-
[Unreleased]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v1.
|
37
|
+
[Unreleased]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v1.3.0...HEAD
|
38
|
+
[1.3.0]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v1.2.0...v1.3.0
|
34
39
|
[1.2.0]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v1.1.0...v1.2.0
|
35
40
|
[1.1.0]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v1.0.0...v1.1.0
|
36
41
|
[1.0.0]: https://github.com/ManageIQ/activerecord-virtual_attributes/compare/v0.1.0...v1.0.0
|
@@ -30,17 +30,29 @@ module ActiveRecord
|
|
30
30
|
virtual_attribute?(name) || virtual_reflection?(name)
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
33
|
+
def replace_virtual_fields(associations)
|
34
|
+
return associations if associations.blank?
|
35
|
+
|
34
36
|
case associations
|
35
37
|
when String, Symbol
|
36
|
-
virtual_field?(associations) ?
|
38
|
+
virtual_field?(associations) ? replace_virtual_fields(virtual_includes(associations)) : associations
|
37
39
|
when Array
|
38
|
-
associations.collect { |association|
|
40
|
+
associations.collect { |association| replace_virtual_fields(association) }.compact
|
39
41
|
when Hash
|
40
42
|
associations.each_with_object({}) do |(parent, child), h|
|
41
|
-
|
42
|
-
|
43
|
-
|
43
|
+
if virtual_field?(parent) # form virtual_attribute => {}
|
44
|
+
case (new_includes = replace_virtual_fields(virtual_includes(parent)))
|
45
|
+
when String, Symbol
|
46
|
+
h[new_includes] = {}
|
47
|
+
when Array
|
48
|
+
new_includes.each { |association| h[association] = {} }
|
49
|
+
when Hash
|
50
|
+
h.deep_merge!(new_includes)
|
51
|
+
end
|
52
|
+
else
|
53
|
+
reflection = reflect_on_association(parent.to_sym)
|
54
|
+
h[parent] = reflection.nil? || reflection.options[:polymorphic] ? {} : reflection.klass.replace_virtual_fields(child) || {}
|
55
|
+
end
|
44
56
|
end
|
45
57
|
else
|
46
58
|
associations
|
@@ -168,7 +180,7 @@ module ActiveRecord
|
|
168
180
|
|
169
181
|
class Relation
|
170
182
|
def without_virtual_includes
|
171
|
-
filtered_includes = includes_values && klass.
|
183
|
+
filtered_includes = includes_values && klass.replace_virtual_fields(includes_values)
|
172
184
|
if filtered_includes != includes_values
|
173
185
|
spawn.tap { |other| other.includes_values = filtered_includes }
|
174
186
|
else
|
@@ -178,25 +190,12 @@ module ActiveRecord
|
|
178
190
|
|
179
191
|
include(Module.new {
|
180
192
|
# From ActiveRecord::FinderMethods
|
181
|
-
def find_with_associations
|
193
|
+
def find_with_associations(&block)
|
182
194
|
real = without_virtual_includes
|
183
|
-
|
184
|
-
|
185
|
-
if ActiveRecord.version.to_s >= "5.1"
|
186
|
-
recs, join_dep = real.find_with_associations { |relation, join_dependency| [relation, join_dependency] }
|
187
|
-
else
|
188
|
-
recs = real.find_with_associations
|
189
|
-
end
|
190
|
-
|
191
|
-
if includes_values
|
192
|
-
ActiveRecord::Associations::Preloader.new.preload(recs, preload_values + includes_values)
|
193
|
-
end
|
194
|
-
|
195
|
-
# when 5.0 support is dropped, assume a block given
|
196
|
-
if block_given?
|
197
|
-
yield recs, join_dep
|
195
|
+
if real.equal?(self)
|
196
|
+
super
|
198
197
|
else
|
199
|
-
|
198
|
+
real.find_with_associations(&block)
|
200
199
|
end
|
201
200
|
end
|
202
201
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord-virtual_attributes
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Keenan Brock
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2019-05-
|
11
|
+
date: 2019-05-24 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|