active_record-union_relation 0.3.0 → 0.4.0

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: 85cab300b41481aa6b308293a0cad8d5d57ba6cb69d7038584aa6d6853e8871b
4
- data.tar.gz: 3519ebba7762500a87dc12239ed6eba82cfc411bc2f75c894e78c2777283393b
3
+ metadata.gz: 894551820a6d6c88f92bf8a9c55f8970a4f878011dfa00d523d76d2b5a785162
4
+ data.tar.gz: ab39294b52ead0c9c9ecaa4fe9e41d047cc8b51ab8324188420bb80585f39511
5
5
  SHA512:
6
- metadata.gz: af74e42519746bddea42fc1dc86988f87db85afd5de8cc3cfb141b9d59bf601510ba74a717eed8cd2aabb5b2dac0e66f0a95ba87b90aca21fdacbb79e9e04319
7
- data.tar.gz: b4b49cbf3975e6577b0a9c4e3683d318d9f8d312b2e63ec0b4bc127e9ae979a91e7f575d8d00cf195fe9648ae30f3af4df4269f2c05586e47a1fe28a95a2e6c1
6
+ metadata.gz: 4330bc6c675c55151260a0af99cfc71dbc6c111c4f4c46d863b96393d2a4f595bff78129303741d08be87befb297e3fa8a4393546336b1245d0c713b8aed16b5
7
+ data.tar.gz: b85793442b32beab7ba2686183a79c7b7b401a366a904b08656b25c9dcb1dc77647562899845b4008e149a28046863213188c343a3c06424dbd37b486f147a12
data/CHANGELOG.md CHANGED
@@ -6,6 +6,18 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [0.4.0] - 2025-01-04
10
+
11
+ ### Added
12
+
13
+ - Support for Rails 8.
14
+
15
+ ## [0.3.1] - 2024-09-19
16
+
17
+ ### Changed
18
+
19
+ - Fix up relations with a single source model.
20
+
9
21
  ## [0.3.0] - 2024-06-13
10
22
 
11
23
  ### Added
@@ -37,7 +49,9 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/) a
37
49
 
38
50
  - 🎉 Initial release. 🎉
39
51
 
40
- [unreleased]: https://github.com/kddnewton/active_record-union_relation/compare/v0.3.0...HEAD
52
+ [unreleased]: https://github.com/kddnewton/active_record-union_relation/compare/v0.4.0...HEAD
53
+ [0.4.0]: https://github.com/kddnewton/active_record-union_relation/compare/v0.3.1...v0.4.0
54
+ [0.3.1]: https://github.com/kddnewton/active_record-union_relation/compare/v0.3.0...v0.3.1
41
55
  [0.3.0]: https://github.com/kddnewton/active_record-union_relation/compare/v0.2.1...v0.3.0
42
56
  [0.2.1]: https://github.com/kddnewton/active_record-union_relation/compare/v0.2.0...v0.2.1
43
57
  [0.2.0]: https://github.com/kddnewton/active_record-union_relation/compare/v0.1.1...v0.2.0
@@ -2,6 +2,6 @@
2
2
 
3
3
  module ActiveRecord
4
4
  class UnionRelation
5
- VERSION = "0.3.0"
5
+ VERSION = "0.4.0"
6
6
  end
7
7
  end
@@ -3,6 +3,17 @@
3
3
  require "active_record"
4
4
  require "active_record/union_relation/version"
5
5
 
6
+ if defined?(ActiveRecord::Result::IndexedRow)
7
+ raise if ActiveRecord::Result::IndexedRow.method_defined?(:each)
8
+
9
+ class ActiveRecord::Result::IndexedRow
10
+ # Monkey-patch in the #each method so that we can treat it like a hash.
11
+ def each(&block)
12
+ @column_indexes.each { |column, index| yield column, @row[index] }
13
+ end
14
+ end
15
+ end
16
+
6
17
  module ActiveRecord
7
18
  class UnionRelation
8
19
  class Error < StandardError
@@ -197,9 +208,13 @@ module ActiveRecord
197
208
 
198
209
  def union_for(model)
199
210
  Arel::Nodes::As.new(
200
- subqueries
201
- .map { |subquery| subquery.to_arel(columns, discriminator).ast }
202
- .inject { |left, right| Arel::Nodes::Union.new(left, right) },
211
+ if subqueries.one?
212
+ subqueries.first.to_arel(columns, discriminator)
213
+ else
214
+ subqueries
215
+ .map { |subquery| subquery.to_arel(columns, discriminator).ast }
216
+ .inject { |left, right| Arel::Nodes::Union.new(left, right) }
217
+ end,
203
218
  Arel.sql(model.connection.quote_table_name("union"))
204
219
  )
205
220
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: active_record-union_relation
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kevin Newton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-13 00:00:00.000000000 Z
11
+ date: 2025-01-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -99,7 +99,7 @@ licenses:
99
99
  - MIT
100
100
  metadata:
101
101
  bug_tracker_uri: https://github.com/kddnewton/active_record-union_relation/issues
102
- changelog_uri: https://github.com/kddnewton/active_record-union_relation/blob/v0.3.0/CHANGELOG.md
102
+ changelog_uri: https://github.com/kddnewton/active_record-union_relation/blob/v0.4.0/CHANGELOG.md
103
103
  source_code_uri: https://github.com/kddnewton/active_record-union_relation
104
104
  rubygems_mfa_required: 'true'
105
105
  post_install_message:
@@ -117,7 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
117
117
  - !ruby/object:Gem::Version
118
118
  version: '0'
119
119
  requirements: []
120
- rubygems_version: 3.5.3
120
+ rubygems_version: 3.5.16
121
121
  signing_key:
122
122
  specification_version: 4
123
123
  summary: Create ActiveRecord relations from UNIONs