activerecord_where_assoc 1.1.3 → 1.1.5
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 366ed8e028f8ed692b13cd8c487385ec380c57f41ce51edcd3370a2412ffe8f3
|
4
|
+
data.tar.gz: c6d2c1b2111cda267e7c5c6555692317ad0188cd748972f262acbdcba02eee7e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1dd9b3955c50ec5ed37ca032b7aa20d93eac2ab035a914e1032efe1527a7b86cd33cd3832c3fa68010bfafef4780f2dfba473e99fa0f089bb3649c8aed578c27
|
7
|
+
data.tar.gz: 6bae922127f45e21c2484c3ef28f0d47512cb1d2cc0b1e94a97a628277698eceb04595b3f96759d367be1e94e4441ad72e8e2901aabf44169994989579b68d00
|
data/CHANGELOG.md
CHANGED
@@ -1,12 +1,20 @@
|
|
1
1
|
# Unreleased
|
2
2
|
|
3
|
+
# 1.1.5 - 2024-05-18
|
4
|
+
|
5
|
+
* Add compatibility for Rails 7.2
|
6
|
+
|
7
|
+
# 1.1.4 - 2023-10-10
|
8
|
+
|
9
|
+
* Add compatibility for Rails 7.1
|
10
|
+
|
3
11
|
# 1.1.3 - 2022-08-16
|
4
12
|
|
5
13
|
* Add support for associations defined on abstract models
|
6
14
|
|
7
15
|
# 1.1.2 - 2020-12-24
|
8
16
|
|
9
|
-
* Add
|
17
|
+
* Add compatibility for Rails 6.1
|
10
18
|
|
11
19
|
# 1.1.1 - 2020-04-13
|
12
20
|
|
data/EXAMPLES.md
CHANGED
@@ -1,4 +1,3 @@
|
|
1
|
-
SELECT "users".* FROM "users"
|
2
1
|
Here are some example usages of the gem, along with the generated SQL.
|
3
2
|
|
4
3
|
Each of those methods can be chained with scoping methods, so they can be used on `Post`, `my_user.posts`, `Post.where('hello')` or inside a scope. Note that for the `*_sql` variants, those should preferably be used on classes only, because otherwise, it could be confusing for a reader.
|
@@ -72,7 +72,7 @@ module ActiveRecordWhereAssoc
|
|
72
72
|
end
|
73
73
|
end
|
74
74
|
|
75
|
-
if ActiveRecord.gem_version >= Gem::Version.new("4.2")
|
75
|
+
if ActiveRecord.gem_version >= Gem::Version.new("4.2") && ActiveRecord.gem_version < Gem::Version.new("7.2.0.alpha")
|
76
76
|
def self.normalize_association_name(association_name)
|
77
77
|
association_name.to_s
|
78
78
|
end
|
@@ -91,5 +91,15 @@ module ActiveRecordWhereAssoc
|
|
91
91
|
reflection.is_a?(ActiveRecord::Reflection::ThroughReflection)
|
92
92
|
end
|
93
93
|
end
|
94
|
+
|
95
|
+
if ActiveRecord.gem_version >= Gem::Version.new("7.1.0.alpha")
|
96
|
+
def self.null_relation?(reflection)
|
97
|
+
reflection.null_relation?
|
98
|
+
end
|
99
|
+
else
|
100
|
+
def self.null_relation?(reflection)
|
101
|
+
reflection.is_a?(ActiveRecord::NullRelation)
|
102
|
+
end
|
103
|
+
end
|
94
104
|
end
|
95
105
|
end
|
@@ -13,7 +13,7 @@ module ActiveRecordWhereAssoc
|
|
13
13
|
# => "EXISTS (SELECT... *relation1*) OR EXISTS (SELECT... *relation2*)"
|
14
14
|
def self.sql_for_any_exists(relations)
|
15
15
|
relations = [relations] unless relations.is_a?(Array)
|
16
|
-
relations = relations.reject { |rel|
|
16
|
+
relations = relations.reject { |rel| ActiveRecordCompat.null_relation?(rel) }
|
17
17
|
sqls = relations.map { |rel| "EXISTS (#{rel.select('1').to_sql})" }
|
18
18
|
if sqls.size > 1
|
19
19
|
"(#{sqls.join(" OR ")})" # Parens needed when embedding the sql in a `where`, because the OR could make things wrong
|
@@ -33,7 +33,7 @@ module ActiveRecordWhereAssoc
|
|
33
33
|
# => "SUM((SELECT... *relation1*)) + SUM((SELECT... *relation2*))"
|
34
34
|
def self.sql_for_sum_of_counts(relations)
|
35
35
|
relations = [relations] unless relations.is_a?(Array)
|
36
|
-
relations = relations.reject { |rel|
|
36
|
+
relations = relations.reject { |rel| ActiveRecordCompat.null_relation?(rel) }
|
37
37
|
# Need the double parentheses
|
38
38
|
relations.map { |rel| "SUM((#{rel.to_sql}))" }.join(" + ").presence || "0"
|
39
39
|
end
|
@@ -85,7 +85,7 @@ module ActiveRecordWhereAssoc
|
|
85
85
|
end
|
86
86
|
|
87
87
|
nested_relations = relations_on_association(record_class, association_names, given_conditions, options, deepest_scope_mod, NestWithSumBlock)
|
88
|
-
nested_relations = nested_relations.reject { |rel|
|
88
|
+
nested_relations = nested_relations.reject { |rel| ActiveRecordCompat.null_relation?(rel) }
|
89
89
|
nested_relations.map { |nr| "COALESCE((#{nr.to_sql}), 0)" }.join(" + ").presence || "0"
|
90
90
|
end
|
91
91
|
|
@@ -334,7 +334,7 @@ module ActiveRecordWhereAssoc
|
|
334
334
|
end
|
335
335
|
|
336
336
|
# No need to do transformations if this is already a NullRelation
|
337
|
-
return current_scope if
|
337
|
+
return current_scope if ActiveRecordCompat.null_relation?(current_scope)
|
338
338
|
|
339
339
|
current_scope = current_scope.limit(1) if reflection.macro == :has_one
|
340
340
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord_where_assoc
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Maxime Handfield Lapointe
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2024-05-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activerecord
|
@@ -31,6 +31,9 @@ dependencies:
|
|
31
31
|
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '1.15'
|
34
|
+
- - "<"
|
35
|
+
- !ruby/object:Gem::Version
|
36
|
+
version: '2.6'
|
34
37
|
type: :development
|
35
38
|
prerelease: false
|
36
39
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -38,6 +41,9 @@ dependencies:
|
|
38
41
|
- - ">="
|
39
42
|
- !ruby/object:Gem::Version
|
40
43
|
version: '1.15'
|
44
|
+
- - "<"
|
45
|
+
- !ruby/object:Gem::Version
|
46
|
+
version: '2.6'
|
41
47
|
- !ruby/object:Gem::Dependency
|
42
48
|
name: minitest
|
43
49
|
requirement: !ruby/object:Gem::Requirement
|
@@ -190,7 +196,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
190
196
|
- !ruby/object:Gem::Version
|
191
197
|
version: '0'
|
192
198
|
requirements: []
|
193
|
-
rubygems_version: 3.
|
199
|
+
rubygems_version: 3.4.10
|
194
200
|
signing_key:
|
195
201
|
specification_version: 4
|
196
202
|
summary: Make ActiveRecord do conditions on your associations
|