activerecord 8.0.2 → 8.0.3
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 +143 -2
- data/README.rdoc +1 -1
- data/lib/active_record/associations/belongs_to_association.rb +9 -1
- data/lib/active_record/associations/collection_association.rb +3 -3
- data/lib/active_record/attribute_methods/query.rb +34 -0
- data/lib/active_record/attribute_methods/serialization.rb +1 -1
- data/lib/active_record/attribute_methods.rb +1 -1
- data/lib/active_record/attributes.rb +35 -24
- data/lib/active_record/autosave_association.rb +1 -1
- data/lib/active_record/base.rb +2 -2
- data/lib/active_record/connection_adapters/abstract/connection_handler.rb +1 -1
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +8 -4
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +17 -6
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +4 -1
- data/lib/active_record/connection_adapters/abstract_adapter.rb +3 -1
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +9 -2
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +2 -2
- data/lib/active_record/connection_adapters/sqlite3/database_statements.rb +2 -2
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +2 -2
- data/lib/active_record/connection_handling.rb +1 -1
- data/lib/active_record/core.rb +8 -6
- data/lib/active_record/database_configurations/hash_config.rb +8 -2
- data/lib/active_record/delegated_type.rb +1 -1
- data/lib/active_record/encryption/encryptable_record.rb +1 -1
- data/lib/active_record/encryption/encrypted_attribute_type.rb +1 -1
- data/lib/active_record/encryption/encryptor.rb +27 -25
- data/lib/active_record/enum.rb +13 -12
- data/lib/active_record/errors.rb +3 -3
- data/lib/active_record/fixture_set/table_row.rb +19 -2
- data/lib/active_record/gem_version.rb +1 -1
- data/lib/active_record/migration.rb +5 -5
- data/lib/active_record/query_logs.rb +4 -0
- data/lib/active_record/querying.rb +4 -4
- data/lib/active_record/railtie.rb +2 -2
- data/lib/active_record/railties/databases.rake +8 -16
- data/lib/active_record/relation/calculations.rb +15 -16
- data/lib/active_record/relation/finder_methods.rb +14 -13
- data/lib/active_record/relation/query_methods.rb +4 -4
- data/lib/active_record/relation/spawn_methods.rb +6 -6
- data/lib/active_record/relation/where_clause.rb +8 -2
- data/lib/active_record/relation.rb +14 -4
- data/lib/active_record/secure_token.rb +3 -3
- data/lib/active_record/signed_id.rb +3 -3
- data/lib/active_record/tasks/database_tasks.rb +22 -14
- data/lib/active_record/tasks/postgresql_database_tasks.rb +9 -1
- data/lib/active_record/test_databases.rb +1 -1
- data/lib/active_record/transactions.rb +3 -1
- data/lib/active_record.rb +3 -2
- data/lib/arel/crud.rb +2 -0
- data/lib/arel/delete_manager.rb +5 -0
- data/lib/arel/nodes/delete_statement.rb +4 -2
- data/lib/arel/nodes/update_statement.rb +4 -2
- data/lib/arel/select_manager.rb +6 -2
- data/lib/arel/update_manager.rb +5 -0
- data/lib/arel/visitors/dot.rb +2 -0
- data/lib/arel/visitors/to_sql.rb +2 -0
- metadata +10 -10
@@ -52,18 +52,18 @@ module ActiveRecord
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
-
# Removes
|
55
|
+
# Removes the condition(s) specified in +skips+ from the query.
|
56
56
|
#
|
57
|
-
# Post.order('id asc').except(:order) #
|
58
|
-
# Post.where('id > 10').order('id asc').except(:where) #
|
57
|
+
# Post.order('id asc').except(:order) # removes the order condition
|
58
|
+
# Post.where('id > 10').order('id asc').except(:where) # removes the where condition but keeps the order
|
59
59
|
def except(*skips)
|
60
60
|
relation_with values.except(*skips)
|
61
61
|
end
|
62
62
|
|
63
|
-
#
|
63
|
+
# Keeps only the condition(s) specified in +onlies+ in the query, removing all others.
|
64
64
|
#
|
65
|
-
# Post.order('id asc').only(:where) #
|
66
|
-
# Post.order('id asc').only(:where, :order) #
|
65
|
+
# Post.order('id asc').only(:where) # keeps only the where condition, removes the order
|
66
|
+
# Post.order('id asc').only(:where, :order) # keeps only the where and order conditions
|
67
67
|
def only(*onlies)
|
68
68
|
relation_with values.slice(*onlies)
|
69
69
|
end
|
@@ -135,10 +135,14 @@ module ActiveRecord
|
|
135
135
|
|
136
136
|
def extract_attribute(node)
|
137
137
|
attr_node = nil
|
138
|
-
|
139
|
-
|
138
|
+
|
139
|
+
valid_attrs = Arel.fetch_attribute(node) do |attr|
|
140
|
+
!attr_node || attr_node == attr # all attr nodes should be the same
|
141
|
+
ensure
|
140
142
|
attr_node = attr
|
141
143
|
end
|
144
|
+
return unless valid_attrs # all nested nodes should yield an attribute
|
145
|
+
|
142
146
|
attr_node
|
143
147
|
end
|
144
148
|
|
@@ -172,6 +176,8 @@ module ActiveRecord
|
|
172
176
|
end
|
173
177
|
|
174
178
|
def except_predicates(columns)
|
179
|
+
return predicates if columns.empty?
|
180
|
+
|
175
181
|
attrs = columns.extract! { |node| node.is_a?(Arel::Attribute) }
|
176
182
|
non_attrs = columns.extract! { |node| node.is_a?(Arel::Predications) }
|
177
183
|
|
@@ -272,7 +272,12 @@ module ActiveRecord
|
|
272
272
|
# such situation.
|
273
273
|
def create_or_find_by(attributes, &block)
|
274
274
|
with_connection do |connection|
|
275
|
-
|
275
|
+
record = nil
|
276
|
+
transaction(requires_new: true) do
|
277
|
+
record = create(attributes, &block)
|
278
|
+
record._last_transaction_return_status || raise(ActiveRecord::Rollback)
|
279
|
+
end
|
280
|
+
record
|
276
281
|
rescue ActiveRecord::RecordNotUnique
|
277
282
|
if connection.transaction_open?
|
278
283
|
where(attributes).lock.find_by!(attributes)
|
@@ -287,7 +292,12 @@ module ActiveRecord
|
|
287
292
|
# is raised if the created record is invalid.
|
288
293
|
def create_or_find_by!(attributes, &block)
|
289
294
|
with_connection do |connection|
|
290
|
-
|
295
|
+
record = nil
|
296
|
+
transaction(requires_new: true) do
|
297
|
+
record = create!(attributes, &block)
|
298
|
+
record._last_transaction_return_status || raise(ActiveRecord::Rollback)
|
299
|
+
end
|
300
|
+
record
|
291
301
|
rescue ActiveRecord::RecordNotUnique
|
292
302
|
if connection.transaction_open?
|
293
303
|
where(attributes).lock.find_by!(attributes)
|
@@ -297,7 +307,7 @@ module ActiveRecord
|
|
297
307
|
end
|
298
308
|
end
|
299
309
|
|
300
|
-
# Like #find_or_create_by, but calls {new}[rdoc-ref:Core
|
310
|
+
# Like #find_or_create_by, but calls {new}[rdoc-ref:Core.new]
|
301
311
|
# instead of {create}[rdoc-ref:Persistence::ClassMethods#create].
|
302
312
|
def find_or_initialize_by(attributes, &block)
|
303
313
|
find_by(attributes) || new(attributes, &block)
|
@@ -949,7 +959,7 @@ module ActiveRecord
|
|
949
959
|
# If attribute names are passed, they are updated along with +updated_at+/+updated_on+ attributes.
|
950
960
|
# If no time argument is passed, the current time is used as default.
|
951
961
|
#
|
952
|
-
#
|
962
|
+
# ==== Examples
|
953
963
|
#
|
954
964
|
# # Touch all records
|
955
965
|
# Person.all.touch_all
|
@@ -30,13 +30,13 @@ module ActiveRecord
|
|
30
30
|
# {validates_uniqueness_of}[rdoc-ref:Validations::ClassMethods#validates_uniqueness_of] can.
|
31
31
|
# You're encouraged to add a unique index in the database to deal with this even more unlikely scenario.
|
32
32
|
#
|
33
|
-
#
|
33
|
+
# ==== Options
|
34
34
|
#
|
35
|
-
# [
|
35
|
+
# [+:length+]
|
36
36
|
# Length of the Secure Random, with a minimum of 24 characters. It will
|
37
37
|
# default to 24.
|
38
38
|
#
|
39
|
-
# [
|
39
|
+
# [+:on+]
|
40
40
|
# The callback when the value is generated. When called with <tt>on:
|
41
41
|
# :initialize</tt>, the value is generated in an
|
42
42
|
# <tt>after_initialize</tt> callback, otherwise the value will be used
|
@@ -57,12 +57,12 @@ module ActiveRecord
|
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
60
|
-
# Works like find_signed, but will raise an
|
60
|
+
# Works like find_signed, but will raise an ActiveSupport::MessageVerifier::InvalidSignature
|
61
61
|
# exception if the +signed_id+ has either expired, has a purpose mismatch, is for another record,
|
62
|
-
# or has been tampered with. It will also raise an
|
62
|
+
# or has been tampered with. It will also raise an ActiveRecord::RecordNotFound exception if
|
63
63
|
# the valid signed id can't find a record.
|
64
64
|
#
|
65
|
-
#
|
65
|
+
# ==== Examples
|
66
66
|
#
|
67
67
|
# User.find_signed! "bad data" # => ActiveSupport::MessageVerifier::InvalidSignature
|
68
68
|
#
|
@@ -45,7 +45,7 @@ module ActiveRecord
|
|
45
45
|
# Example:
|
46
46
|
# ActiveRecord::Tasks::DatabaseTasks.structure_dump_flags = {
|
47
47
|
# mysql2: ['--no-defaults', '--skip-add-drop-table'],
|
48
|
-
#
|
48
|
+
# postgresql: '--no-tablespaces'
|
49
49
|
# }
|
50
50
|
mattr_accessor :structure_dump_flags, instance_accessor: false
|
51
51
|
|
@@ -373,7 +373,8 @@ module ActiveRecord
|
|
373
373
|
database_adapter_for(db_config, *arguments).structure_load(filename, flags)
|
374
374
|
end
|
375
375
|
|
376
|
-
def load_schema(db_config, format =
|
376
|
+
def load_schema(db_config, format = db_config.schema_format, file = nil) # :nodoc:
|
377
|
+
format = format.to_sym
|
377
378
|
file ||= schema_dump_path(db_config, format)
|
378
379
|
return unless file
|
379
380
|
|
@@ -394,7 +395,7 @@ module ActiveRecord
|
|
394
395
|
Migration.verbose = verbose_was
|
395
396
|
end
|
396
397
|
|
397
|
-
def schema_up_to_date?(configuration,
|
398
|
+
def schema_up_to_date?(configuration, _ = nil, file = nil)
|
398
399
|
db_config = resolve_configuration(configuration)
|
399
400
|
|
400
401
|
file ||= schema_dump_path(db_config)
|
@@ -410,25 +411,32 @@ module ActiveRecord
|
|
410
411
|
end
|
411
412
|
end
|
412
413
|
|
413
|
-
def reconstruct_from_schema(db_config,
|
414
|
-
file ||= schema_dump_path(db_config,
|
414
|
+
def reconstruct_from_schema(db_config, file = nil) # :nodoc:
|
415
|
+
file ||= schema_dump_path(db_config, db_config.schema_format)
|
415
416
|
|
416
417
|
check_schema_file(file) if file
|
417
418
|
|
418
419
|
with_temporary_pool(db_config, clobber: true) do
|
419
|
-
if schema_up_to_date?(db_config,
|
420
|
+
if schema_up_to_date?(db_config, nil, file)
|
420
421
|
truncate_tables(db_config) unless ENV["SKIP_TEST_DATABASE_TRUNCATE"]
|
421
422
|
else
|
422
423
|
purge(db_config)
|
423
|
-
load_schema(db_config,
|
424
|
+
load_schema(db_config, db_config.schema_format, file)
|
424
425
|
end
|
425
426
|
rescue ActiveRecord::NoDatabaseError
|
426
427
|
create(db_config)
|
427
|
-
load_schema(db_config,
|
428
|
+
load_schema(db_config, db_config.schema_format, file)
|
429
|
+
end
|
430
|
+
end
|
431
|
+
|
432
|
+
def dump_all
|
433
|
+
with_temporary_pool_for_each do |pool|
|
434
|
+
db_config = pool.db_config
|
435
|
+
ActiveRecord::Tasks::DatabaseTasks.dump_schema(db_config, ENV["SCHEMA_FORMAT"] || db_config.schema_format)
|
428
436
|
end
|
429
437
|
end
|
430
438
|
|
431
|
-
def dump_schema(db_config, format =
|
439
|
+
def dump_schema(db_config, format = db_config.schema_format) # :nodoc:
|
432
440
|
return unless db_config.schema_dump
|
433
441
|
|
434
442
|
require "active_record/schema_dumper"
|
@@ -436,7 +444,7 @@ module ActiveRecord
|
|
436
444
|
return unless filename
|
437
445
|
|
438
446
|
FileUtils.mkdir_p(db_dir)
|
439
|
-
case format
|
447
|
+
case format.to_sym
|
440
448
|
when :ruby
|
441
449
|
File.open(filename, "w:utf-8") do |file|
|
442
450
|
ActiveRecord::SchemaDumper.dump(migration_connection_pool, file)
|
@@ -452,7 +460,7 @@ module ActiveRecord
|
|
452
460
|
end
|
453
461
|
end
|
454
462
|
|
455
|
-
def schema_dump_path(db_config, format =
|
463
|
+
def schema_dump_path(db_config, format = db_config.schema_format)
|
456
464
|
return ENV["SCHEMA"] if ENV["SCHEMA"]
|
457
465
|
|
458
466
|
filename = db_config.schema_dump(format)
|
@@ -471,10 +479,10 @@ module ActiveRecord
|
|
471
479
|
db_config.default_schema_cache_path(ActiveRecord::Tasks::DatabaseTasks.db_dir)
|
472
480
|
end
|
473
481
|
|
474
|
-
def load_schema_current(format =
|
482
|
+
def load_schema_current(format = nil, file = nil, environment = env)
|
475
483
|
each_current_configuration(environment) do |db_config|
|
476
484
|
with_temporary_connection(db_config) do
|
477
|
-
load_schema(db_config, format, file)
|
485
|
+
load_schema(db_config, format || db_config.schema_format, file)
|
478
486
|
end
|
479
487
|
end
|
480
488
|
end
|
@@ -661,7 +669,7 @@ module ActiveRecord
|
|
661
669
|
unless database_already_initialized
|
662
670
|
schema_dump_path = schema_dump_path(db_config)
|
663
671
|
if schema_dump_path && File.exist?(schema_dump_path)
|
664
|
-
load_schema(db_config
|
672
|
+
load_schema(db_config)
|
665
673
|
end
|
666
674
|
end
|
667
675
|
|
@@ -78,8 +78,9 @@ module ActiveRecord
|
|
78
78
|
end
|
79
79
|
|
80
80
|
def structure_load(filename, extra_flags)
|
81
|
-
args = ["--set", ON_ERROR_STOP_1, "--quiet", "--no-psqlrc", "--output", File::NULL
|
81
|
+
args = ["--set", ON_ERROR_STOP_1, "--quiet", "--no-psqlrc", "--output", File::NULL]
|
82
82
|
args.concat(Array(extra_flags)) if extra_flags
|
83
|
+
args.concat(["--file", filename])
|
83
84
|
args << db_config.database
|
84
85
|
run_cmd("psql", args, "loading")
|
85
86
|
end
|
@@ -132,6 +133,13 @@ module ActiveRecord
|
|
132
133
|
tempfile = Tempfile.open("uncommented_structure.sql")
|
133
134
|
begin
|
134
135
|
File.foreach(filename) do |line|
|
136
|
+
next if line.start_with?("\\restrict ")
|
137
|
+
|
138
|
+
if line.start_with?("\\unrestrict ")
|
139
|
+
removing_comments = true
|
140
|
+
next
|
141
|
+
end
|
142
|
+
|
135
143
|
unless removing_comments && (line.start_with?(SQL_COMMENT_BEGIN) || line.blank?)
|
136
144
|
tempfile << line
|
137
145
|
removing_comments = false
|
@@ -14,7 +14,7 @@ module ActiveRecord
|
|
14
14
|
ActiveRecord::Base.configurations.configs_for(env_name: env_name).each do |db_config|
|
15
15
|
db_config._database = "#{db_config.database}-#{i}"
|
16
16
|
|
17
|
-
ActiveRecord::Tasks::DatabaseTasks.reconstruct_from_schema(db_config,
|
17
|
+
ActiveRecord::Tasks::DatabaseTasks.reconstruct_from_schema(db_config, nil)
|
18
18
|
end
|
19
19
|
ensure
|
20
20
|
ActiveRecord::Base.establish_connection
|
@@ -13,7 +13,7 @@ module ActiveRecord
|
|
13
13
|
scope: [:kind, :name]
|
14
14
|
end
|
15
15
|
|
16
|
-
attr_accessor :_new_record_before_last_commit # :nodoc:
|
16
|
+
attr_accessor :_new_record_before_last_commit, :_last_transaction_return_status # :nodoc:
|
17
17
|
|
18
18
|
# = Active Record \Transactions
|
19
19
|
#
|
@@ -417,6 +417,7 @@ module ActiveRecord
|
|
417
417
|
status = yield
|
418
418
|
raise ActiveRecord::Rollback unless status
|
419
419
|
end
|
420
|
+
@_last_transaction_return_status = status
|
420
421
|
status
|
421
422
|
end
|
422
423
|
end
|
@@ -432,6 +433,7 @@ module ActiveRecord
|
|
432
433
|
def init_internals
|
433
434
|
super
|
434
435
|
@_start_transaction_state = nil
|
436
|
+
@_last_transaction_return_status = nil
|
435
437
|
@_committed_already_called = nil
|
436
438
|
@_new_record_before_last_commit = nil
|
437
439
|
end
|
data/lib/active_record.rb
CHANGED
@@ -87,7 +87,6 @@ module ActiveRecord
|
|
87
87
|
autoload :Timestamp
|
88
88
|
autoload :TokenFor
|
89
89
|
autoload :TouchLater
|
90
|
-
autoload :Transaction
|
91
90
|
autoload :Transactions
|
92
91
|
autoload :Translation
|
93
92
|
autoload :Validations
|
@@ -109,6 +108,7 @@ module ActiveRecord
|
|
109
108
|
autoload :Result
|
110
109
|
autoload :StatementCache
|
111
110
|
autoload :TableMetadata
|
111
|
+
autoload :Transaction
|
112
112
|
autoload :Type
|
113
113
|
|
114
114
|
autoload_under "relation" do
|
@@ -368,7 +368,8 @@ module ActiveRecord
|
|
368
368
|
# specific) SQL statements. If :ruby, the schema is dumped as an
|
369
369
|
# ActiveRecord::Schema file which can be loaded into any database that
|
370
370
|
# supports migrations. Use :ruby if you want to have different database
|
371
|
-
# adapters for, e.g., your development and test environments.
|
371
|
+
# adapters for, e.g., your development and test environments. This can be
|
372
|
+
# overridden per-database in the database configuration.
|
372
373
|
singleton_class.attr_accessor :schema_format
|
373
374
|
self.schema_format = :ruby
|
374
375
|
|
data/lib/arel/crud.rb
CHANGED
@@ -26,6 +26,7 @@ module Arel # :nodoc: all
|
|
26
26
|
um.offset(offset)
|
27
27
|
um.order(*orders)
|
28
28
|
um.wheres = constraints
|
29
|
+
um.comment(comment)
|
29
30
|
um.key = key
|
30
31
|
|
31
32
|
um.group(group_values_columns) unless group_values_columns.empty?
|
@@ -39,6 +40,7 @@ module Arel # :nodoc: all
|
|
39
40
|
dm.offset(offset)
|
40
41
|
dm.order(*orders)
|
41
42
|
dm.wheres = constraints
|
43
|
+
dm.comment(comment)
|
42
44
|
dm.key = key
|
43
45
|
dm.group(group_values_columns) unless group_values_columns.empty?
|
44
46
|
dm.having(having_clause) unless having_clause.nil?
|
data/lib/arel/delete_manager.rb
CHANGED
@@ -3,7 +3,7 @@
|
|
3
3
|
module Arel # :nodoc: all
|
4
4
|
module Nodes
|
5
5
|
class DeleteStatement < Arel::Nodes::Node
|
6
|
-
attr_accessor :relation, :wheres, :groups, :havings, :orders, :limit, :offset, :key
|
6
|
+
attr_accessor :relation, :wheres, :groups, :havings, :orders, :limit, :offset, :comment, :key
|
7
7
|
|
8
8
|
def initialize(relation = nil, wheres = [])
|
9
9
|
super()
|
@@ -14,6 +14,7 @@ module Arel # :nodoc: all
|
|
14
14
|
@orders = []
|
15
15
|
@limit = nil
|
16
16
|
@offset = nil
|
17
|
+
@comment = nil
|
17
18
|
@key = nil
|
18
19
|
end
|
19
20
|
|
@@ -24,7 +25,7 @@ module Arel # :nodoc: all
|
|
24
25
|
end
|
25
26
|
|
26
27
|
def hash
|
27
|
-
[self.class, @relation, @wheres, @orders, @limit, @offset, @key].hash
|
28
|
+
[self.class, @relation, @wheres, @orders, @limit, @offset, @comment, @key].hash
|
28
29
|
end
|
29
30
|
|
30
31
|
def eql?(other)
|
@@ -36,6 +37,7 @@ module Arel # :nodoc: all
|
|
36
37
|
self.havings == other.havings &&
|
37
38
|
self.limit == other.limit &&
|
38
39
|
self.offset == other.offset &&
|
40
|
+
self.comment == other.comment &&
|
39
41
|
self.key == other.key
|
40
42
|
end
|
41
43
|
alias :== :eql?
|
@@ -3,7 +3,7 @@
|
|
3
3
|
module Arel # :nodoc: all
|
4
4
|
module Nodes
|
5
5
|
class UpdateStatement < Arel::Nodes::Node
|
6
|
-
attr_accessor :relation, :wheres, :values, :groups, :havings, :orders, :limit, :offset, :key
|
6
|
+
attr_accessor :relation, :wheres, :values, :groups, :havings, :orders, :limit, :offset, :comment, :key
|
7
7
|
|
8
8
|
def initialize(relation = nil)
|
9
9
|
super()
|
@@ -15,6 +15,7 @@ module Arel # :nodoc: all
|
|
15
15
|
@orders = []
|
16
16
|
@limit = nil
|
17
17
|
@offset = nil
|
18
|
+
@comment = nil
|
18
19
|
@key = nil
|
19
20
|
end
|
20
21
|
|
@@ -25,7 +26,7 @@ module Arel # :nodoc: all
|
|
25
26
|
end
|
26
27
|
|
27
28
|
def hash
|
28
|
-
[@relation, @wheres, @values, @orders, @limit, @offset, @key].hash
|
29
|
+
[@relation, @wheres, @values, @orders, @limit, @offset, @comment, @key].hash
|
29
30
|
end
|
30
31
|
|
31
32
|
def eql?(other)
|
@@ -38,6 +39,7 @@ module Arel # :nodoc: all
|
|
38
39
|
self.orders == other.orders &&
|
39
40
|
self.limit == other.limit &&
|
40
41
|
self.offset == other.offset &&
|
42
|
+
self.comment == other.comment &&
|
41
43
|
self.key == other.key
|
42
44
|
end
|
43
45
|
alias :== :eql?
|
data/lib/arel/select_manager.rb
CHANGED
@@ -250,8 +250,12 @@ module Arel # :nodoc: all
|
|
250
250
|
end
|
251
251
|
|
252
252
|
def comment(*values)
|
253
|
-
|
254
|
-
|
253
|
+
if values.any?
|
254
|
+
@ctx.comment = Nodes::Comment.new(values)
|
255
|
+
self
|
256
|
+
else
|
257
|
+
@ctx.comment
|
258
|
+
end
|
255
259
|
end
|
256
260
|
|
257
261
|
private
|
data/lib/arel/update_manager.rb
CHANGED
data/lib/arel/visitors/dot.rb
CHANGED
@@ -153,6 +153,7 @@ module Arel # :nodoc: all
|
|
153
153
|
visit_edge o, "orders"
|
154
154
|
visit_edge o, "limit"
|
155
155
|
visit_edge o, "offset"
|
156
|
+
visit_edge o, "comment"
|
156
157
|
visit_edge o, "key"
|
157
158
|
end
|
158
159
|
|
@@ -162,6 +163,7 @@ module Arel # :nodoc: all
|
|
162
163
|
visit_edge o, "orders"
|
163
164
|
visit_edge o, "limit"
|
164
165
|
visit_edge o, "offset"
|
166
|
+
visit_edge o, "comment"
|
165
167
|
visit_edge o, "key"
|
166
168
|
end
|
167
169
|
|
data/lib/arel/visitors/to_sql.rb
CHANGED
@@ -35,6 +35,7 @@ module Arel # :nodoc: all
|
|
35
35
|
collect_nodes_for o.wheres, collector, " WHERE ", " AND "
|
36
36
|
collect_nodes_for o.orders, collector, " ORDER BY "
|
37
37
|
maybe_visit o.limit, collector
|
38
|
+
maybe_visit o.comment, collector
|
38
39
|
end
|
39
40
|
|
40
41
|
def visit_Arel_Nodes_UpdateStatement(o, collector)
|
@@ -48,6 +49,7 @@ module Arel # :nodoc: all
|
|
48
49
|
collect_nodes_for o.wheres, collector, " WHERE ", " AND "
|
49
50
|
collect_nodes_for o.orders, collector, " ORDER BY "
|
50
51
|
maybe_visit o.limit, collector
|
52
|
+
maybe_visit o.comment, collector
|
51
53
|
end
|
52
54
|
|
53
55
|
def visit_Arel_Nodes_InsertStatement(o, collector)
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activerecord
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.0.
|
4
|
+
version: 8.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date:
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: activesupport
|
@@ -15,28 +15,28 @@ dependencies:
|
|
15
15
|
requirements:
|
16
16
|
- - '='
|
17
17
|
- !ruby/object:Gem::Version
|
18
|
-
version: 8.0.
|
18
|
+
version: 8.0.3
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
23
|
- - '='
|
24
24
|
- !ruby/object:Gem::Version
|
25
|
-
version: 8.0.
|
25
|
+
version: 8.0.3
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: activemodel
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
30
|
- - '='
|
31
31
|
- !ruby/object:Gem::Version
|
32
|
-
version: 8.0.
|
32
|
+
version: 8.0.3
|
33
33
|
type: :runtime
|
34
34
|
prerelease: false
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
37
|
- - '='
|
38
38
|
- !ruby/object:Gem::Version
|
39
|
-
version: 8.0.
|
39
|
+
version: 8.0.3
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: timeout
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
@@ -474,10 +474,10 @@ licenses:
|
|
474
474
|
- MIT
|
475
475
|
metadata:
|
476
476
|
bug_tracker_uri: https://github.com/rails/rails/issues
|
477
|
-
changelog_uri: https://github.com/rails/rails/blob/v8.0.
|
478
|
-
documentation_uri: https://api.rubyonrails.org/v8.0.
|
477
|
+
changelog_uri: https://github.com/rails/rails/blob/v8.0.3/activerecord/CHANGELOG.md
|
478
|
+
documentation_uri: https://api.rubyonrails.org/v8.0.3/
|
479
479
|
mailing_list_uri: https://discuss.rubyonrails.org/c/rubyonrails-talk
|
480
|
-
source_code_uri: https://github.com/rails/rails/tree/v8.0.
|
480
|
+
source_code_uri: https://github.com/rails/rails/tree/v8.0.3/activerecord
|
481
481
|
rubygems_mfa_required: 'true'
|
482
482
|
rdoc_options:
|
483
483
|
- "--main"
|
@@ -495,7 +495,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
495
495
|
- !ruby/object:Gem::Version
|
496
496
|
version: '0'
|
497
497
|
requirements: []
|
498
|
-
rubygems_version: 3.6.
|
498
|
+
rubygems_version: 3.6.9
|
499
499
|
specification_version: 4
|
500
500
|
summary: Object-relational mapper framework (part of Rails).
|
501
501
|
test_files: []
|