eager_group 0.2.1 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/eager_group/preloader.rb +10 -0
- data/lib/eager_group/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0628b41e3191da5216f80c436de1da7c4a9dc3be
|
4
|
+
data.tar.gz: 36de11cb727b029633f41cac0950f1fa31a33adc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: efbadb72bff4d8b62e75db9bafaed9d6f4f3197447f35e6bd722ce26977318bf38bf003db102bf973f2c42037c21a57ef06c00a33ebfa4f79f25efe853de516c
|
7
|
+
data.tar.gz: 7bec44884ab2c31e914400d9bd370f8de5c7c31c8764b95ec8f907090f4a7a3a589a162527faed42d13608bdb409b5a80d87562d6d2b56e3091dfe3c12e3d674
|
data/CHANGELOG.md
CHANGED
@@ -16,14 +16,24 @@ module EagerGroup
|
|
16
16
|
reflection = @klass.reflect_on_association(definition.association)
|
17
17
|
association_class = reflection.class_name.constantize
|
18
18
|
association_class = association_class.instance_exec(&definition.scope) if definition.scope
|
19
|
+
polymophic_as_condition = lambda {|reflection|
|
20
|
+
if reflection.type
|
21
|
+
["#{reflection.name}.#{reflection.type} = ?", @klass.base_class.name]
|
22
|
+
else
|
23
|
+
[]
|
24
|
+
end
|
25
|
+
}
|
26
|
+
|
19
27
|
if reflection.through_reflection
|
20
28
|
foreign_key = "#{reflection.through_reflection.name}.#{reflection.through_reflection.foreign_key}"
|
21
29
|
aggregate_hash = association_class.joins(reflection.through_reflection.name)
|
22
30
|
.where("#{foreign_key} IN (?)", record_ids)
|
31
|
+
.where(polymophic_as_condition.call(reflection.through_reflection))
|
23
32
|
.group("#{foreign_key}")
|
24
33
|
.send(definition.aggregate_function, definition.column_name)
|
25
34
|
else
|
26
35
|
aggregate_hash = association_class.where(reflection.foreign_key => record_ids)
|
36
|
+
.where(polymophic_as_condition.call(reflection))
|
27
37
|
.group(reflection.foreign_key)
|
28
38
|
.send(definition.aggregate_function, definition.column_name)
|
29
39
|
end
|
data/lib/eager_group/version.rb
CHANGED