activerecord 7.1.0.rc2 → 7.1.1
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/CHANGELOG.md +22 -0
- data/lib/active_record/associations/preloader.rb +1 -1
- data/lib/active_record/attribute_methods/dirty.rb +1 -1
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +1 -1
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +1 -3
- data/lib/active_record/connection_adapters/abstract/transaction.rb +11 -7
- data/lib/active_record/connection_adapters/postgresql/column.rb +14 -2
- data/lib/active_record/connection_adapters/postgresql/oid/timestamp_with_time_zone.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql/quoting.rb +1 -0
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +2 -1
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +2 -3
- data/lib/active_record/core.rb +21 -21
- data/lib/active_record/gem_version.rb +2 -2
- data/lib/active_record/internal_metadata.rb +2 -0
- data/lib/active_record/migration/command_recorder.rb +4 -1
- data/lib/active_record/model_schema.rb +14 -14
- data/lib/active_record/nested_attributes.rb +4 -6
- data/lib/active_record/railtie.rb +1 -1
- data/lib/active_record/relation/calculations.rb +16 -8
- data/lib/active_record/relation/query_methods.rb +1 -1
- data/lib/active_record/timestamp.rb +1 -1
- data/lib/active_record/validations/uniqueness.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3595eee8065caff3100f00f5ce54d1b3a34935759766cb16b4d8229a57ebc97e
|
4
|
+
data.tar.gz: 5fbab431bcbc3b56cae5b2d8400c893071c72ccc7feea3eb6d9343418c650ec6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c75c3da922f3b0089112bb07c115787bedc1bb57a6e05aa04df893262554e09bf81e71898ac7ed24b1c80a00071818e14267cbffc2bb2b789755867b85f76d78
|
7
|
+
data.tar.gz: 5f6684e9a76e3a2a7156b687d4ac0701b9ddd840edd9c671f51031c534bdbd1e920b2aad65a479299383cb8555346a585e3167c353f33f95ecf8e05115438205
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,25 @@
|
|
1
|
+
## Rails 7.1.1 (October 11, 2023) ##
|
2
|
+
|
3
|
+
* Fix auto populating IDENTITY columns for PostgreSQL.
|
4
|
+
|
5
|
+
*fatkodima*
|
6
|
+
|
7
|
+
* Fix "ArgumentError: wrong number of arguments (given 3, expected 2)" when
|
8
|
+
down migrating `rename_table` in older migrations.
|
9
|
+
|
10
|
+
*fatkodima*
|
11
|
+
|
12
|
+
* Do not require the Action Text, Active Storage and Action Mailbox tables
|
13
|
+
to be present when running when running test on CI.
|
14
|
+
|
15
|
+
*Rafael Mendonça França*
|
16
|
+
|
17
|
+
|
18
|
+
## Rails 7.1.0 (October 05, 2023) ##
|
19
|
+
|
20
|
+
* No changes.
|
21
|
+
|
22
|
+
|
1
23
|
## Rails 7.1.0.rc2 (October 01, 2023) ##
|
2
24
|
|
3
25
|
* Remove -shm and -wal SQLite files when `rails db:drop` is run.
|
@@ -75,7 +75,7 @@ module ActiveRecord
|
|
75
75
|
# for an Author.
|
76
76
|
# - an Array which specifies multiple association names. This array
|
77
77
|
# is processed recursively. For example, specifying <tt>[:avatar, :books]</tt>
|
78
|
-
# allows this method to preload an author's avatar as well as all of
|
78
|
+
# allows this method to preload an author's avatar as well as all of their
|
79
79
|
# books.
|
80
80
|
# - a Hash which specifies multiple association names, as well as
|
81
81
|
# association names for the to-be-preloaded association objects. For
|
@@ -7,7 +7,7 @@ module ActiveRecord
|
|
7
7
|
# = Active Record Attribute Methods \Dirty
|
8
8
|
#
|
9
9
|
# Provides a way to track changes in your Active Record models. It adds all
|
10
|
-
# methods from ActiveModel::Dirty and adds database
|
10
|
+
# methods from ActiveModel::Dirty and adds database-specific methods.
|
11
11
|
#
|
12
12
|
# A newly created +Person+ object is unchanged:
|
13
13
|
#
|
@@ -983,7 +983,6 @@ module ActiveRecord
|
|
983
983
|
# Adds a reference. The reference column is a bigint by default,
|
984
984
|
# the <tt>:type</tt> option can be used to specify a different type.
|
985
985
|
# Optionally adds a +_type+ column, if <tt>:polymorphic</tt> option is provided.
|
986
|
-
# #add_reference and #add_belongs_to are acceptable.
|
987
986
|
#
|
988
987
|
# The +options+ hash can include the following keys:
|
989
988
|
# [<tt>:type</tt>]
|
@@ -1034,7 +1033,6 @@ module ActiveRecord
|
|
1034
1033
|
alias :add_belongs_to :add_reference
|
1035
1034
|
|
1036
1035
|
# Removes the reference(s). Also removes a +type+ column if one exists.
|
1037
|
-
# #remove_reference and #remove_belongs_to are acceptable.
|
1038
1036
|
#
|
1039
1037
|
# ====== Remove the reference
|
1040
1038
|
#
|
@@ -1400,7 +1398,7 @@ module ActiveRecord
|
|
1400
1398
|
|
1401
1399
|
limited = relation.reselect(values).distinct!
|
1402
1400
|
limited_ids = select_rows(limited.arel, "SQL").map do |results|
|
1403
|
-
results.last(Array(relation.primary_key).length) # ignores order values for MySQL and
|
1401
|
+
results.last(Array(relation.primary_key).length) # ignores order values for MySQL and PostgreSQL
|
1404
1402
|
end
|
1405
1403
|
|
1406
1404
|
if limited_ids.empty?
|
@@ -82,8 +82,11 @@ module ActiveRecord
|
|
82
82
|
@base_payload = payload
|
83
83
|
end
|
84
84
|
|
85
|
+
class InstrumentationNotStartedError < ActiveRecordError; end
|
86
|
+
class InstrumentationAlreadyStartedError < ActiveRecordError; end
|
87
|
+
|
85
88
|
def start
|
86
|
-
|
89
|
+
raise InstrumentationAlreadyStartedError.new("Called start on an already started transaction") if @started
|
87
90
|
@started = true
|
88
91
|
|
89
92
|
@payload = @base_payload.dup
|
@@ -92,7 +95,7 @@ module ActiveRecord
|
|
92
95
|
end
|
93
96
|
|
94
97
|
def finish(outcome)
|
95
|
-
|
98
|
+
raise InstrumentationNotStartedError.new("Called finish on a transaction that hasn't started") unless @started
|
96
99
|
@started = false
|
97
100
|
|
98
101
|
@payload[:outcome] = outcome
|
@@ -166,7 +169,7 @@ module ActiveRecord
|
|
166
169
|
end
|
167
170
|
|
168
171
|
def incomplete!
|
169
|
-
@instrumenter.finish(:incomplete)
|
172
|
+
@instrumenter.finish(:incomplete) if materialized?
|
170
173
|
end
|
171
174
|
|
172
175
|
def materialize!
|
@@ -180,6 +183,7 @@ module ActiveRecord
|
|
180
183
|
|
181
184
|
def restore!
|
182
185
|
if materialized?
|
186
|
+
incomplete!
|
183
187
|
@materialized = false
|
184
188
|
materialize!
|
185
189
|
end
|
@@ -348,13 +352,13 @@ module ActiveRecord
|
|
348
352
|
connection.rollback_to_savepoint(savepoint_name) if materialized?
|
349
353
|
end
|
350
354
|
@state.rollback!
|
351
|
-
@instrumenter.finish(:rollback)
|
355
|
+
@instrumenter.finish(:rollback) if materialized?
|
352
356
|
end
|
353
357
|
|
354
358
|
def commit
|
355
359
|
connection.release_savepoint(savepoint_name) if materialized?
|
356
360
|
@state.commit!
|
357
|
-
@instrumenter.finish(:commit)
|
361
|
+
@instrumenter.finish(:commit) if materialized?
|
358
362
|
end
|
359
363
|
|
360
364
|
def full_rollback?; false; end
|
@@ -389,13 +393,13 @@ module ActiveRecord
|
|
389
393
|
def rollback
|
390
394
|
connection.rollback_db_transaction if materialized?
|
391
395
|
@state.full_rollback!
|
392
|
-
@instrumenter.finish(:rollback)
|
396
|
+
@instrumenter.finish(:rollback) if materialized?
|
393
397
|
end
|
394
398
|
|
395
399
|
def commit
|
396
400
|
connection.commit_db_transaction if materialized?
|
397
401
|
@state.full_commit!
|
398
|
-
@instrumenter.finish(:commit)
|
402
|
+
@instrumenter.finish(:commit) if materialized?
|
399
403
|
end
|
400
404
|
end
|
401
405
|
|
@@ -6,16 +6,24 @@ module ActiveRecord
|
|
6
6
|
class Column < ConnectionAdapters::Column # :nodoc:
|
7
7
|
delegate :oid, :fmod, to: :sql_type_metadata
|
8
8
|
|
9
|
-
def initialize(*, serial: nil, generated: nil, **)
|
9
|
+
def initialize(*, serial: nil, identity: nil, generated: nil, **)
|
10
10
|
super
|
11
11
|
@serial = serial
|
12
|
+
@identity = identity
|
12
13
|
@generated = generated
|
13
14
|
end
|
14
15
|
|
16
|
+
def identity?
|
17
|
+
@identity
|
18
|
+
end
|
19
|
+
|
15
20
|
def serial?
|
16
21
|
@serial
|
17
22
|
end
|
18
|
-
|
23
|
+
|
24
|
+
def auto_incremented_by_db?
|
25
|
+
serial? || identity?
|
26
|
+
end
|
19
27
|
|
20
28
|
def virtual?
|
21
29
|
# We assume every generated column is virtual, no matter the concrete type
|
@@ -41,12 +49,14 @@ module ActiveRecord
|
|
41
49
|
|
42
50
|
def init_with(coder)
|
43
51
|
@serial = coder["serial"]
|
52
|
+
@identity = coder["identity"]
|
44
53
|
@generated = coder["generated"]
|
45
54
|
super
|
46
55
|
end
|
47
56
|
|
48
57
|
def encode_with(coder)
|
49
58
|
coder["serial"] = @serial
|
59
|
+
coder["identity"] = @identity
|
50
60
|
coder["generated"] = @generated
|
51
61
|
super
|
52
62
|
end
|
@@ -54,6 +64,7 @@ module ActiveRecord
|
|
54
64
|
def ==(other)
|
55
65
|
other.is_a?(Column) &&
|
56
66
|
super &&
|
67
|
+
identity? == other.identity? &&
|
57
68
|
serial? == other.serial?
|
58
69
|
end
|
59
70
|
alias :eql? :==
|
@@ -61,6 +72,7 @@ module ActiveRecord
|
|
61
72
|
def hash
|
62
73
|
Column.hash ^
|
63
74
|
super.hash ^
|
75
|
+
identity?.hash ^
|
64
76
|
serial?.hash
|
65
77
|
end
|
66
78
|
end
|
@@ -15,7 +15,7 @@ module ActiveRecord
|
|
15
15
|
time = super
|
16
16
|
return time if time.is_a?(ActiveSupport::TimeWithZone) || !time.acts_like?(:time)
|
17
17
|
|
18
|
-
# While in UTC mode, the PG gem may not return times back in "UTC" even if they were provided to
|
18
|
+
# While in UTC mode, the PG gem may not return times back in "UTC" even if they were provided to PostgreSQL in UTC.
|
19
19
|
# We prefer times always in UTC, so here we convert back.
|
20
20
|
if is_utc?
|
21
21
|
time.getutc
|
@@ -908,7 +908,7 @@ module ActiveRecord
|
|
908
908
|
end
|
909
909
|
|
910
910
|
def new_column_from_field(table_name, field, _definitions)
|
911
|
-
column_name, type, default, notnull, oid, fmod, collation, comment, attgenerated = field
|
911
|
+
column_name, type, default, notnull, oid, fmod, collation, comment, identity, attgenerated = field
|
912
912
|
type_metadata = fetch_type_metadata(column_name, type, oid.to_i, fmod.to_i)
|
913
913
|
default_value = extract_value_from_default(default)
|
914
914
|
|
@@ -931,6 +931,7 @@ module ActiveRecord
|
|
931
931
|
collation: collation,
|
932
932
|
comment: comment.presence,
|
933
933
|
serial: serial,
|
934
|
+
identity: identity.presence,
|
934
935
|
generated: attgenerated
|
935
936
|
)
|
936
937
|
end
|
@@ -716,9 +716,7 @@ module ActiveRecord
|
|
716
716
|
end
|
717
717
|
|
718
718
|
private
|
719
|
-
|
720
|
-
@type_map ||= Type::HashLookupTypeMap.new
|
721
|
-
end
|
719
|
+
attr_reader :type_map
|
722
720
|
|
723
721
|
def initialize_type_map(m = type_map)
|
724
722
|
self.class.initialize_type_map(m)
|
@@ -1078,6 +1076,7 @@ module ActiveRecord
|
|
1078
1076
|
SELECT a.attname, format_type(a.atttypid, a.atttypmod),
|
1079
1077
|
pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod,
|
1080
1078
|
c.collname, col_description(a.attrelid, a.attnum) AS comment,
|
1079
|
+
a.attidentity AS identity,
|
1081
1080
|
#{supports_virtual_columns? ? 'attgenerated' : quote('')} as attgenerated
|
1082
1081
|
FROM pg_attribute a
|
1083
1082
|
LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum
|
data/lib/active_record/core.rb
CHANGED
@@ -536,6 +536,27 @@ module ActiveRecord
|
|
536
536
|
coder["active_record_yaml_version"] = 2
|
537
537
|
end
|
538
538
|
|
539
|
+
##
|
540
|
+
# :method: slice
|
541
|
+
#
|
542
|
+
# :call-seq: slice(*methods)
|
543
|
+
#
|
544
|
+
# Returns a hash of the given methods with their names as keys and returned
|
545
|
+
# values as values.
|
546
|
+
#
|
547
|
+
#--
|
548
|
+
# Implemented by ActiveModel::Access#slice.
|
549
|
+
|
550
|
+
##
|
551
|
+
# :method: values_at
|
552
|
+
#
|
553
|
+
# :call-seq: values_at(*methods)
|
554
|
+
#
|
555
|
+
# Returns an array of the values returned by the given methods.
|
556
|
+
#
|
557
|
+
#--
|
558
|
+
# Implemented by ActiveModel::Access#values_at.
|
559
|
+
|
539
560
|
# Returns true if +comparison_object+ is the same exact object, or +comparison_object+
|
540
561
|
# is of the same type and +self+ has an ID and it is equal to +comparison_object.id+.
|
541
562
|
#
|
@@ -701,27 +722,6 @@ module ActiveRecord
|
|
701
722
|
end
|
702
723
|
end
|
703
724
|
|
704
|
-
##
|
705
|
-
# :method: values_at
|
706
|
-
#
|
707
|
-
# :call-seq: values_at(*methods)
|
708
|
-
#
|
709
|
-
# Returns an array of the values returned by the given methods.
|
710
|
-
#
|
711
|
-
#--
|
712
|
-
# Implemented by ActiveModel::Access#values_at.
|
713
|
-
|
714
|
-
##
|
715
|
-
# :method: slice
|
716
|
-
#
|
717
|
-
# :call-seq: slice(*methods)
|
718
|
-
#
|
719
|
-
# Returns a hash of the given methods with their names as keys and returned
|
720
|
-
# values as values.
|
721
|
-
#
|
722
|
-
#--
|
723
|
-
# Implemented by ActiveModel::Access#slice.
|
724
|
-
|
725
725
|
private
|
726
726
|
# +Array#flatten+ will call +#to_ary+ (recursively) on each of the elements of
|
727
727
|
# the array, and then rescues from the possible +NoMethodError+. If those elements are
|
@@ -64,6 +64,8 @@ module ActiveRecord
|
|
64
64
|
end
|
65
65
|
|
66
66
|
def create_table_and_set_flags(environment, schema_sha1 = nil)
|
67
|
+
return unless enabled?
|
68
|
+
|
67
69
|
create_table
|
68
70
|
update_or_create_entry(:environment, environment)
|
69
71
|
update_or_create_entry(:schema_sha1, schema_sha1) if schema_sha1
|
@@ -206,7 +206,10 @@ module ActiveRecord
|
|
206
206
|
end
|
207
207
|
|
208
208
|
def invert_rename_table(args)
|
209
|
-
|
209
|
+
old_name, new_name, options = args
|
210
|
+
args = [new_name, old_name]
|
211
|
+
args << options if options
|
212
|
+
[:rename_table, args]
|
210
213
|
end
|
211
214
|
|
212
215
|
def invert_remove_column(args)
|
@@ -553,6 +553,20 @@ module ActiveRecord
|
|
553
553
|
initialize_find_by_cache
|
554
554
|
end
|
555
555
|
|
556
|
+
def load_schema # :nodoc:
|
557
|
+
return if schema_loaded?
|
558
|
+
@load_schema_monitor.synchronize do
|
559
|
+
return if @columns_hash
|
560
|
+
|
561
|
+
load_schema!
|
562
|
+
|
563
|
+
@schema_loaded = true
|
564
|
+
rescue
|
565
|
+
reload_schema_from_cache # If the schema loading failed half way through, we must reset the state.
|
566
|
+
raise
|
567
|
+
end
|
568
|
+
end
|
569
|
+
|
556
570
|
protected
|
557
571
|
def initialize_load_schema_monitor
|
558
572
|
@load_schema_monitor = Monitor.new
|
@@ -594,20 +608,6 @@ module ActiveRecord
|
|
594
608
|
defined?(@schema_loaded) && @schema_loaded
|
595
609
|
end
|
596
610
|
|
597
|
-
def load_schema
|
598
|
-
return if schema_loaded?
|
599
|
-
@load_schema_monitor.synchronize do
|
600
|
-
return if @columns_hash
|
601
|
-
|
602
|
-
load_schema!
|
603
|
-
|
604
|
-
@schema_loaded = true
|
605
|
-
rescue
|
606
|
-
reload_schema_from_cache # If the schema loading failed half way through, we must reset the state.
|
607
|
-
raise
|
608
|
-
end
|
609
|
-
end
|
610
|
-
|
611
611
|
def load_schema!
|
612
612
|
unless table_name
|
613
613
|
raise ActiveRecord::TableNotSpecified, "#{self} has no table configured. Set one with #{self}.table_name="
|
@@ -283,13 +283,11 @@ module ActiveRecord
|
|
283
283
|
#
|
284
284
|
# === Creating forms with nested attributes
|
285
285
|
#
|
286
|
-
# Use ActionView::Helpers::FormHelper#fields_for to create form elements
|
287
|
-
#
|
286
|
+
# Use ActionView::Helpers::FormHelper#fields_for to create form elements for
|
287
|
+
# nested attributes.
|
288
288
|
#
|
289
|
-
#
|
290
|
-
#
|
291
|
-
# If you are using ActionView::Helpers::FormHelper#fields_for, your integration
|
292
|
-
# tests should replicate the HTML structure it provides. For example;
|
289
|
+
# Integration test params should reflect the structure of the form. For
|
290
|
+
# example:
|
293
291
|
#
|
294
292
|
# post members_path, params: {
|
295
293
|
# member: {
|
@@ -398,7 +398,7 @@ To keep using the current cache store, you can turn off cache versioning entirel
|
|
398
398
|
end
|
399
399
|
|
400
400
|
ActiveSupport.on_load(:active_record_fixture_set) do
|
401
|
-
# Encrypt
|
401
|
+
# Encrypt Active Record fixtures
|
402
402
|
if ActiveRecord::Encryption.config.encrypt_fixtures
|
403
403
|
ActiveRecord::Fixture.prepend ActiveRecord::Encryption::EncryptedFixtures
|
404
404
|
end
|
@@ -93,7 +93,8 @@ module ActiveRecord
|
|
93
93
|
end
|
94
94
|
end
|
95
95
|
|
96
|
-
# Same as
|
96
|
+
# Same as #count, but performs the query asynchronously and returns an
|
97
|
+
# ActiveRecord::Promise.
|
97
98
|
def async_count(column_name = nil)
|
98
99
|
async.count(column_name)
|
99
100
|
end
|
@@ -106,7 +107,8 @@ module ActiveRecord
|
|
106
107
|
calculate(:average, column_name)
|
107
108
|
end
|
108
109
|
|
109
|
-
# Same as
|
110
|
+
# Same as #average, but performs the query asynchronously and returns an
|
111
|
+
# ActiveRecord::Promise.
|
110
112
|
def async_average(column_name)
|
111
113
|
async.average(column_name)
|
112
114
|
end
|
@@ -120,7 +122,8 @@ module ActiveRecord
|
|
120
122
|
calculate(:minimum, column_name)
|
121
123
|
end
|
122
124
|
|
123
|
-
# Same as
|
125
|
+
# Same as #minimum, but performs the query asynchronously and returns an
|
126
|
+
# ActiveRecord::Promise.
|
124
127
|
def async_minimum(column_name)
|
125
128
|
async.minimum(column_name)
|
126
129
|
end
|
@@ -134,7 +137,8 @@ module ActiveRecord
|
|
134
137
|
calculate(:maximum, column_name)
|
135
138
|
end
|
136
139
|
|
137
|
-
# Same as
|
140
|
+
# Same as #maximum, but performs the query asynchronously and returns an
|
141
|
+
# ActiveRecord::Promise.
|
138
142
|
def async_maximum(column_name)
|
139
143
|
async.maximum(column_name)
|
140
144
|
end
|
@@ -152,7 +156,8 @@ module ActiveRecord
|
|
152
156
|
end
|
153
157
|
end
|
154
158
|
|
155
|
-
# Same as
|
159
|
+
# Same as #sum, but performs the query asynchronously and returns an
|
160
|
+
# ActiveRecord::Promise.
|
156
161
|
def async_sum(identity_or_column = nil)
|
157
162
|
async.sum(identity_or_column)
|
158
163
|
end
|
@@ -287,7 +292,8 @@ module ActiveRecord
|
|
287
292
|
end
|
288
293
|
end
|
289
294
|
|
290
|
-
# Same as
|
295
|
+
# Same as #pluck, but performs the query asynchronously and returns an
|
296
|
+
# ActiveRecord::Promise.
|
291
297
|
def async_pluck(*column_names)
|
292
298
|
async.pluck(*column_names)
|
293
299
|
end
|
@@ -315,7 +321,8 @@ module ActiveRecord
|
|
315
321
|
limit(1).pluck(*column_names).then(&:first)
|
316
322
|
end
|
317
323
|
|
318
|
-
# Same as
|
324
|
+
# Same as #pick, but performs the query asynchronously and returns an
|
325
|
+
# ActiveRecord::Promise.
|
319
326
|
def async_pick(*column_names)
|
320
327
|
async.pick(*column_names)
|
321
328
|
end
|
@@ -358,7 +365,8 @@ module ActiveRecord
|
|
358
365
|
result.then { |result| type_cast_pluck_values(result, columns) }
|
359
366
|
end
|
360
367
|
|
361
|
-
# Same as
|
368
|
+
# Same as #ids, but performs the query asynchronously and returns an
|
369
|
+
# ActiveRecord::Promise.
|
362
370
|
def async_ids
|
363
371
|
async.ids
|
364
372
|
end
|
@@ -588,7 +588,7 @@ module ActiveRecord
|
|
588
588
|
# User.order(Arel.sql('end_date - start_date'))
|
589
589
|
# # SELECT "users".* FROM "users" ORDER BY end_date - start_date
|
590
590
|
#
|
591
|
-
# Custom query syntax, like JSON columns for
|
591
|
+
# Custom query syntax, like JSON columns for PostgreSQL, is supported in this way.
|
592
592
|
#
|
593
593
|
# User.order(Arel.sql("payload->>'kind'"))
|
594
594
|
# # SELECT "users".* FROM "users" ORDER BY payload->>'kind'
|
@@ -30,7 +30,7 @@ module ActiveRecord
|
|
30
30
|
#
|
31
31
|
# ActiveRecord::Base.time_zone_aware_types = [:datetime]
|
32
32
|
#
|
33
|
-
# You can also add database
|
33
|
+
# You can also add database-specific timezone aware types. For example, for PostgreSQL:
|
34
34
|
#
|
35
35
|
# ActiveRecord::Base.time_zone_aware_types += [:tsrange, :tstzrange]
|
36
36
|
#
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.1.
|
4
|
+
version: 7.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - '='
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 7.1.
|
19
|
+
version: 7.1.1
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - '='
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 7.1.
|
26
|
+
version: 7.1.1
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - '='
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 7.1.
|
33
|
+
version: 7.1.1
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - '='
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: 7.1.
|
40
|
+
version: 7.1.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: timeout
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -469,10 +469,10 @@ licenses:
|
|
469
469
|
- MIT
|
470
470
|
metadata:
|
471
471
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
472
|
-
changelog_uri: https://github.com/rails/rails/blob/v7.1.
|
473
|
-
documentation_uri: https://api.rubyonrails.org/v7.1.
|
472
|
+
changelog_uri: https://github.com/rails/rails/blob/v7.1.1/activerecord/CHANGELOG.md
|
473
|
+
documentation_uri: https://api.rubyonrails.org/v7.1.1/
|
474
474
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
475
|
-
source_code_uri: https://github.com/rails/rails/tree/v7.1.
|
475
|
+
source_code_uri: https://github.com/rails/rails/tree/v7.1.1/activerecord
|
476
476
|
rubygems_mfa_required: 'true'
|
477
477
|
post_install_message:
|
478
478
|
rdoc_options:
|
@@ -487,9 +487,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
487
487
|
version: 2.7.0
|
488
488
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
489
489
|
requirements:
|
490
|
-
- - "
|
490
|
+
- - ">="
|
491
491
|
- !ruby/object:Gem::Version
|
492
|
-
version:
|
492
|
+
version: '0'
|
493
493
|
requirements: []
|
494
494
|
rubygems_version: 3.4.18
|
495
495
|
signing_key:
|