activerecord 5.0.7 → 5.1.7
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of activerecord might be problematic. Click here for more details.
- checksums.yaml +5 -5
- data/CHANGELOG.md +657 -2080
- data/MIT-LICENSE +1 -1
- data/README.rdoc +1 -1
- data/examples/performance.rb +28 -28
- data/examples/simple.rb +3 -3
- data/lib/active_record/aggregations.rb +244 -244
- data/lib/active_record/association_relation.rb +5 -5
- data/lib/active_record/associations/alias_tracker.rb +10 -11
- data/lib/active_record/associations/association.rb +23 -5
- data/lib/active_record/associations/association_scope.rb +95 -81
- data/lib/active_record/associations/belongs_to_association.rb +7 -4
- data/lib/active_record/associations/builder/belongs_to.rb +30 -16
- data/lib/active_record/associations/builder/collection_association.rb +1 -2
- data/lib/active_record/associations/builder/has_and_belongs_to_many.rb +27 -27
- data/lib/active_record/associations/collection_association.rb +36 -205
- data/lib/active_record/associations/collection_proxy.rb +132 -63
- data/lib/active_record/associations/has_many_association.rb +10 -19
- data/lib/active_record/associations/has_many_through_association.rb +12 -4
- data/lib/active_record/associations/has_one_association.rb +24 -28
- data/lib/active_record/associations/has_one_through_association.rb +5 -1
- data/lib/active_record/associations/join_dependency/join_association.rb +4 -28
- data/lib/active_record/associations/join_dependency/join_base.rb +1 -1
- data/lib/active_record/associations/join_dependency/join_part.rb +1 -1
- data/lib/active_record/associations/join_dependency.rb +121 -118
- data/lib/active_record/associations/preloader/association.rb +64 -64
- data/lib/active_record/associations/preloader/belongs_to.rb +0 -2
- data/lib/active_record/associations/preloader/collection_association.rb +6 -6
- data/lib/active_record/associations/preloader/has_many.rb +0 -2
- data/lib/active_record/associations/preloader/singular_association.rb +6 -8
- data/lib/active_record/associations/preloader/through_association.rb +41 -41
- data/lib/active_record/associations/preloader.rb +94 -94
- data/lib/active_record/associations/singular_association.rb +8 -25
- data/lib/active_record/associations/through_association.rb +2 -5
- data/lib/active_record/associations.rb +1591 -1562
- data/lib/active_record/attribute/user_provided_default.rb +4 -2
- data/lib/active_record/attribute.rb +98 -71
- data/lib/active_record/attribute_assignment.rb +61 -61
- data/lib/active_record/attribute_decorators.rb +35 -13
- data/lib/active_record/attribute_methods/before_type_cast.rb +7 -7
- data/lib/active_record/attribute_methods/dirty.rb +229 -46
- data/lib/active_record/attribute_methods/primary_key.rb +74 -73
- data/lib/active_record/attribute_methods/read.rb +39 -35
- data/lib/active_record/attribute_methods/serialization.rb +7 -7
- data/lib/active_record/attribute_methods/time_zone_conversion.rb +35 -58
- data/lib/active_record/attribute_methods/write.rb +30 -33
- data/lib/active_record/attribute_methods.rb +56 -65
- data/lib/active_record/attribute_mutation_tracker.rb +63 -11
- data/lib/active_record/attribute_set/builder.rb +27 -33
- data/lib/active_record/attribute_set/yaml_encoder.rb +41 -0
- data/lib/active_record/attribute_set.rb +9 -6
- data/lib/active_record/attributes.rb +22 -22
- data/lib/active_record/autosave_association.rb +18 -13
- data/lib/active_record/base.rb +24 -22
- data/lib/active_record/callbacks.rb +56 -14
- data/lib/active_record/coders/yaml_column.rb +9 -11
- data/lib/active_record/collection_cache_key.rb +3 -4
- data/lib/active_record/connection_adapters/abstract/connection_pool.rb +330 -284
- data/lib/active_record/connection_adapters/abstract/database_limits.rb +1 -3
- data/lib/active_record/connection_adapters/abstract/database_statements.rb +39 -37
- data/lib/active_record/connection_adapters/abstract/query_cache.rb +32 -27
- data/lib/active_record/connection_adapters/abstract/quoting.rb +62 -51
- data/lib/active_record/connection_adapters/abstract/schema_creation.rb +10 -20
- data/lib/active_record/connection_adapters/abstract/schema_definitions.rb +74 -79
- data/lib/active_record/connection_adapters/abstract/schema_dumper.rb +53 -41
- data/lib/active_record/connection_adapters/abstract/schema_statements.rb +120 -100
- data/lib/active_record/connection_adapters/abstract/transaction.rb +49 -43
- data/lib/active_record/connection_adapters/abstract_adapter.rb +165 -135
- data/lib/active_record/connection_adapters/abstract_mysql_adapter.rb +404 -424
- data/lib/active_record/connection_adapters/column.rb +26 -4
- data/lib/active_record/connection_adapters/connection_specification.rb +128 -118
- data/lib/active_record/connection_adapters/mysql/column.rb +6 -31
- data/lib/active_record/connection_adapters/mysql/database_statements.rb +36 -49
- data/lib/active_record/connection_adapters/mysql/explain_pretty_printer.rb +22 -22
- data/lib/active_record/connection_adapters/mysql/quoting.rb +6 -12
- data/lib/active_record/connection_adapters/mysql/schema_creation.rb +49 -45
- data/lib/active_record/connection_adapters/mysql/schema_definitions.rb +16 -19
- data/lib/active_record/connection_adapters/mysql/schema_dumper.rb +54 -28
- data/lib/active_record/connection_adapters/mysql/schema_statements.rb +43 -0
- data/lib/active_record/connection_adapters/mysql/type_metadata.rb +7 -6
- data/lib/active_record/connection_adapters/mysql2_adapter.rb +23 -27
- data/lib/active_record/connection_adapters/postgresql/database_statements.rb +32 -53
- data/lib/active_record/connection_adapters/postgresql/explain_pretty_printer.rb +3 -3
- data/lib/active_record/connection_adapters/postgresql/oid/array.rb +19 -9
- data/lib/active_record/connection_adapters/postgresql/oid/bit.rb +5 -3
- data/lib/active_record/connection_adapters/postgresql/oid/cidr.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql/oid/date_time.rb +2 -2
- data/lib/active_record/connection_adapters/postgresql/oid/decimal.rb +1 -1
- data/lib/active_record/connection_adapters/postgresql/oid/enum.rb +3 -3
- data/lib/active_record/connection_adapters/postgresql/oid/hstore.rb +16 -16
- data/lib/active_record/connection_adapters/postgresql/oid/jsonb.rb +0 -10
- data/lib/active_record/connection_adapters/postgresql/oid/{rails_5_1_point.rb → legacy_point.rb} +9 -16
- data/lib/active_record/connection_adapters/postgresql/oid/money.rb +2 -2
- data/lib/active_record/connection_adapters/postgresql/oid/oid.rb +13 -0
- data/lib/active_record/connection_adapters/postgresql/oid/point.rb +28 -8
- data/lib/active_record/connection_adapters/postgresql/oid/range.rb +32 -30
- data/lib/active_record/connection_adapters/postgresql/oid/specialized_string.rb +2 -1
- data/lib/active_record/connection_adapters/postgresql/oid/type_map_initializer.rb +51 -51
- data/lib/active_record/connection_adapters/postgresql/oid.rb +22 -21
- data/lib/active_record/connection_adapters/postgresql/quoting.rb +40 -35
- data/lib/active_record/connection_adapters/postgresql/schema_creation.rb +15 -0
- data/lib/active_record/connection_adapters/postgresql/schema_definitions.rb +37 -24
- data/lib/active_record/connection_adapters/postgresql/schema_dumper.rb +19 -23
- data/lib/active_record/connection_adapters/postgresql/schema_statements.rb +182 -222
- data/lib/active_record/connection_adapters/postgresql/type_metadata.rb +6 -4
- data/lib/active_record/connection_adapters/postgresql/utils.rb +7 -5
- data/lib/active_record/connection_adapters/postgresql_adapter.rb +198 -167
- data/lib/active_record/connection_adapters/schema_cache.rb +16 -7
- data/lib/active_record/connection_adapters/sql_type_metadata.rb +3 -3
- data/lib/active_record/connection_adapters/sqlite3/explain_pretty_printer.rb +1 -1
- data/lib/active_record/connection_adapters/sqlite3/quoting.rb +16 -19
- data/lib/active_record/connection_adapters/sqlite3/schema_creation.rb +1 -8
- data/lib/active_record/connection_adapters/sqlite3/schema_definitions.rb +28 -0
- data/lib/active_record/connection_adapters/sqlite3/schema_dumper.rb +17 -0
- data/lib/active_record/connection_adapters/sqlite3/schema_statements.rb +32 -0
- data/lib/active_record/connection_adapters/sqlite3_adapter.rb +184 -167
- data/lib/active_record/connection_adapters/statement_pool.rb +7 -7
- data/lib/active_record/connection_handling.rb +14 -26
- data/lib/active_record/core.rb +109 -93
- data/lib/active_record/counter_cache.rb +60 -13
- data/lib/active_record/define_callbacks.rb +20 -0
- data/lib/active_record/dynamic_matchers.rb +80 -79
- data/lib/active_record/enum.rb +8 -6
- data/lib/active_record/errors.rb +64 -15
- data/lib/active_record/explain.rb +1 -2
- data/lib/active_record/explain_registry.rb +1 -1
- data/lib/active_record/explain_subscriber.rb +7 -4
- data/lib/active_record/fixture_set/file.rb +11 -8
- data/lib/active_record/fixtures.rb +66 -53
- data/lib/active_record/gem_version.rb +1 -1
- data/lib/active_record/inheritance.rb +93 -79
- data/lib/active_record/integration.rb +7 -7
- data/lib/active_record/internal_metadata.rb +3 -16
- data/lib/active_record/legacy_yaml_adapter.rb +1 -1
- data/lib/active_record/locking/optimistic.rb +69 -74
- data/lib/active_record/locking/pessimistic.rb +10 -1
- data/lib/active_record/log_subscriber.rb +23 -28
- data/lib/active_record/migration/command_recorder.rb +94 -94
- data/lib/active_record/migration/compatibility.rb +100 -47
- data/lib/active_record/migration/join_table.rb +6 -6
- data/lib/active_record/migration.rb +153 -155
- data/lib/active_record/model_schema.rb +94 -107
- data/lib/active_record/nested_attributes.rb +200 -199
- data/lib/active_record/null_relation.rb +11 -34
- data/lib/active_record/persistence.rb +65 -50
- data/lib/active_record/query_cache.rb +2 -6
- data/lib/active_record/querying.rb +3 -4
- data/lib/active_record/railtie.rb +16 -17
- data/lib/active_record/railties/controller_runtime.rb +6 -2
- data/lib/active_record/railties/databases.rake +105 -133
- data/lib/active_record/railties/jdbcmysql_error.rb +1 -1
- data/lib/active_record/readonly_attributes.rb +2 -2
- data/lib/active_record/reflection.rb +154 -108
- data/lib/active_record/relation/batches/batch_enumerator.rb +1 -1
- data/lib/active_record/relation/batches.rb +80 -51
- data/lib/active_record/relation/calculations.rb +169 -162
- data/lib/active_record/relation/delegation.rb +32 -31
- data/lib/active_record/relation/finder_methods.rb +197 -231
- data/lib/active_record/relation/merger.rb +58 -62
- data/lib/active_record/relation/predicate_builder/array_handler.rb +7 -5
- data/lib/active_record/relation/predicate_builder/association_query_handler.rb +23 -23
- data/lib/active_record/relation/predicate_builder/base_handler.rb +3 -1
- data/lib/active_record/relation/predicate_builder/basic_object_handler.rb +0 -8
- data/lib/active_record/relation/predicate_builder/polymorphic_array_handler.rb +12 -10
- data/lib/active_record/relation/predicate_builder/range_handler.rb +0 -8
- data/lib/active_record/relation/predicate_builder.rb +92 -89
- data/lib/active_record/relation/query_attribute.rb +1 -1
- data/lib/active_record/relation/query_methods.rb +255 -293
- data/lib/active_record/relation/record_fetch_warning.rb +3 -3
- data/lib/active_record/relation/spawn_methods.rb +4 -5
- data/lib/active_record/relation/where_clause.rb +80 -65
- data/lib/active_record/relation/where_clause_factory.rb +47 -8
- data/lib/active_record/relation.rb +93 -119
- data/lib/active_record/result.rb +41 -32
- data/lib/active_record/runtime_registry.rb +3 -3
- data/lib/active_record/sanitization.rb +176 -192
- data/lib/active_record/schema.rb +3 -3
- data/lib/active_record/schema_dumper.rb +15 -38
- data/lib/active_record/schema_migration.rb +8 -4
- data/lib/active_record/scoping/default.rb +90 -90
- data/lib/active_record/scoping/named.rb +11 -11
- data/lib/active_record/scoping.rb +6 -6
- data/lib/active_record/secure_token.rb +2 -2
- data/lib/active_record/statement_cache.rb +13 -15
- data/lib/active_record/store.rb +31 -32
- data/lib/active_record/suppressor.rb +2 -1
- data/lib/active_record/table_metadata.rb +9 -5
- data/lib/active_record/tasks/database_tasks.rb +65 -55
- data/lib/active_record/tasks/mysql_database_tasks.rb +76 -73
- data/lib/active_record/tasks/postgresql_database_tasks.rb +72 -47
- data/lib/active_record/tasks/sqlite_database_tasks.rb +18 -16
- data/lib/active_record/timestamp.rb +46 -25
- data/lib/active_record/touch_later.rb +1 -2
- data/lib/active_record/transactions.rb +97 -109
- data/lib/active_record/type/adapter_specific_registry.rb +46 -42
- data/lib/active_record/type/decimal_without_scale.rb +13 -0
- data/lib/active_record/type/hash_lookup_type_map.rb +3 -3
- data/lib/active_record/type/internal/abstract_json.rb +4 -0
- data/lib/active_record/type/serialized.rb +14 -8
- data/lib/active_record/type/text.rb +9 -0
- data/lib/active_record/type/time.rb +0 -1
- data/lib/active_record/type/type_map.rb +11 -15
- data/lib/active_record/type/unsigned_integer.rb +15 -0
- data/lib/active_record/type.rb +17 -13
- data/lib/active_record/type_caster/connection.rb +8 -6
- data/lib/active_record/type_caster/map.rb +3 -1
- data/lib/active_record/type_caster.rb +2 -2
- data/lib/active_record/validations/associated.rb +1 -1
- data/lib/active_record/validations/presence.rb +2 -2
- data/lib/active_record/validations/uniqueness.rb +8 -39
- data/lib/active_record/validations.rb +4 -4
- data/lib/active_record/version.rb +1 -1
- data/lib/active_record.rb +20 -20
- data/lib/rails/generators/active_record/migration/migration_generator.rb +37 -34
- data/lib/rails/generators/active_record/migration.rb +1 -1
- data/lib/rails/generators/active_record/model/model_generator.rb +9 -9
- data/lib/rails/generators/active_record.rb +4 -4
- metadata +24 -13
- data/lib/active_record/relation/predicate_builder/class_handler.rb +0 -27
@@ -84,19 +84,6 @@ module ActiveRecord
|
|
84
84
|
#
|
85
85
|
# Sets the name of the internal metadata table.
|
86
86
|
|
87
|
-
##
|
88
|
-
# :singleton-method: protected_environments
|
89
|
-
# :call-seq: protected_environments
|
90
|
-
#
|
91
|
-
# The array of names of environments where destructive actions should be prohibited. By default,
|
92
|
-
# the value is <tt>["production"]</tt>.
|
93
|
-
|
94
|
-
##
|
95
|
-
# :singleton-method: protected_environments=
|
96
|
-
# :call-seq: protected_environments=(environments)
|
97
|
-
#
|
98
|
-
# Sets an array of names of environments where destructive actions should be prohibited.
|
99
|
-
|
100
87
|
##
|
101
88
|
# :singleton-method: pluralize_table_names
|
102
89
|
# :call-seq: pluralize_table_names
|
@@ -128,13 +115,11 @@ module ActiveRecord
|
|
128
115
|
class_attribute :internal_metadata_table_name, instance_accessor: false
|
129
116
|
self.internal_metadata_table_name = "ar_internal_metadata"
|
130
117
|
|
131
|
-
class_attribute :protected_environments, instance_accessor: false
|
132
|
-
self.protected_environments = ["production"]
|
133
|
-
|
134
118
|
class_attribute :pluralize_table_names, instance_writer: false
|
135
119
|
self.pluralize_table_names = true
|
136
120
|
|
137
|
-
self.
|
121
|
+
self.protected_environments = ["production"]
|
122
|
+
self.inheritance_column = "type"
|
138
123
|
self.ignored_columns = [].freeze
|
139
124
|
|
140
125
|
delegate :type_for_attribute, to: :class
|
@@ -240,11 +225,26 @@ module ActiveRecord
|
|
240
225
|
end
|
241
226
|
|
242
227
|
def full_table_name_prefix #:nodoc:
|
243
|
-
(parents.detect{ |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
|
228
|
+
(parents.detect { |p| p.respond_to?(:table_name_prefix) } || self).table_name_prefix
|
244
229
|
end
|
245
230
|
|
246
231
|
def full_table_name_suffix #:nodoc:
|
247
|
-
(parents.detect {|p| p.respond_to?(:table_name_suffix) } || self).table_name_suffix
|
232
|
+
(parents.detect { |p| p.respond_to?(:table_name_suffix) } || self).table_name_suffix
|
233
|
+
end
|
234
|
+
|
235
|
+
# The array of names of environments where destructive actions should be prohibited. By default,
|
236
|
+
# the value is <tt>["production"]</tt>.
|
237
|
+
def protected_environments
|
238
|
+
if defined?(@protected_environments)
|
239
|
+
@protected_environments
|
240
|
+
else
|
241
|
+
superclass.protected_environments
|
242
|
+
end
|
243
|
+
end
|
244
|
+
|
245
|
+
# Sets an array of names of environments where destructive actions should be prohibited.
|
246
|
+
def protected_environments=(environments)
|
247
|
+
@protected_environments = environments.map(&:to_s)
|
248
248
|
end
|
249
249
|
|
250
250
|
# Defines the name of the table column which will store the class name on single-table
|
@@ -296,7 +296,7 @@ module ActiveRecord
|
|
296
296
|
end
|
297
297
|
|
298
298
|
# Sets the name of the sequence to use when generating ids to the given
|
299
|
-
# value, or (if the value is nil or false) to the value returned by the
|
299
|
+
# value, or (if the value is +nil+ or +false+) to the value returned by the
|
300
300
|
# given block. This is required for Oracle and is useful for any
|
301
301
|
# database which relies on sequences for primary key generation.
|
302
302
|
#
|
@@ -351,7 +351,11 @@ module ActiveRecord
|
|
351
351
|
|
352
352
|
def attribute_types # :nodoc:
|
353
353
|
load_schema
|
354
|
-
@attribute_types ||= Hash.new(Type
|
354
|
+
@attribute_types ||= Hash.new(Type.default_value)
|
355
|
+
end
|
356
|
+
|
357
|
+
def yaml_encoder # :nodoc:
|
358
|
+
@yaml_encoder ||= AttributeSet::YAMLEncoder.new(attribute_types)
|
355
359
|
end
|
356
360
|
|
357
361
|
# Returns the type of the attribute with the given name, after applying
|
@@ -377,7 +381,7 @@ module ActiveRecord
|
|
377
381
|
# default values when instantiating the Active Record object for this table.
|
378
382
|
def column_defaults
|
379
383
|
load_schema
|
380
|
-
_default_attributes.to_hash
|
384
|
+
_default_attributes.deep_dup.to_hash
|
381
385
|
end
|
382
386
|
|
383
387
|
def _default_attributes # :nodoc:
|
@@ -392,7 +396,12 @@ module ActiveRecord
|
|
392
396
|
# Returns an array of column objects where the primary id, all columns ending in "_id" or "_count",
|
393
397
|
# and columns used for single table inheritance have been removed.
|
394
398
|
def content_columns
|
395
|
-
@content_columns ||= columns.reject
|
399
|
+
@content_columns ||= columns.reject do |c|
|
400
|
+
c.name == primary_key ||
|
401
|
+
c.name == inheritance_column ||
|
402
|
+
c.name.end_with?("_id") ||
|
403
|
+
c.name.end_with?("_count")
|
404
|
+
end
|
396
405
|
end
|
397
406
|
|
398
407
|
# Resets all the cached information about columns, which will cause them
|
@@ -432,108 +441,86 @@ module ActiveRecord
|
|
432
441
|
|
433
442
|
protected
|
434
443
|
|
435
|
-
|
436
|
-
|
437
|
-
|
444
|
+
def initialize_load_schema_monitor
|
445
|
+
@load_schema_monitor = Monitor.new
|
446
|
+
end
|
438
447
|
|
439
448
|
private
|
440
449
|
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
def schema_loaded?
|
447
|
-
defined?(@schema_loaded) && @schema_loaded
|
448
|
-
end
|
450
|
+
def inherited(child_class)
|
451
|
+
super
|
452
|
+
child_class.initialize_load_schema_monitor
|
453
|
+
end
|
449
454
|
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
return if defined?(@columns_hash) && @columns_hash
|
455
|
+
def schema_loaded?
|
456
|
+
defined?(@schema_loaded) && @schema_loaded
|
457
|
+
end
|
454
458
|
|
455
|
-
|
459
|
+
def load_schema
|
460
|
+
return if schema_loaded?
|
461
|
+
@load_schema_monitor.synchronize do
|
462
|
+
return if defined?(@columns_hash) && @columns_hash
|
456
463
|
|
457
|
-
|
458
|
-
end
|
459
|
-
end
|
464
|
+
load_schema!
|
460
465
|
|
461
|
-
|
462
|
-
|
463
|
-
@columns_hash.each do |name, column|
|
464
|
-
warn_if_deprecated_type(column)
|
465
|
-
define_attribute(
|
466
|
-
name,
|
467
|
-
connection.lookup_cast_type_from_column(column),
|
468
|
-
default: column.default,
|
469
|
-
user_provided_default: false
|
470
|
-
)
|
466
|
+
@schema_loaded = true
|
467
|
+
end
|
471
468
|
end
|
472
|
-
end
|
473
469
|
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
@columns_hash = nil
|
485
|
-
@schema_loaded = false
|
486
|
-
@attribute_names = nil
|
487
|
-
direct_descendants.each do |descendant|
|
488
|
-
descendant.send(:reload_schema_from_cache)
|
470
|
+
def load_schema!
|
471
|
+
@columns_hash = connection.schema_cache.columns_hash(table_name).except(*ignored_columns)
|
472
|
+
@columns_hash.each do |name, column|
|
473
|
+
define_attribute(
|
474
|
+
name,
|
475
|
+
connection.lookup_cast_type_from_column(column),
|
476
|
+
default: column.default,
|
477
|
+
user_provided_default: false
|
478
|
+
)
|
479
|
+
end
|
489
480
|
end
|
490
|
-
end
|
491
|
-
|
492
|
-
# Guesses the table name, but does not decorate it with prefix and suffix information.
|
493
|
-
def undecorated_table_name(class_name = base_class.name)
|
494
|
-
table_name = class_name.to_s.demodulize.underscore
|
495
|
-
pluralize_table_names ? table_name.pluralize : table_name
|
496
|
-
end
|
497
481
|
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
482
|
+
def reload_schema_from_cache
|
483
|
+
@arel_engine = nil
|
484
|
+
@arel_table = nil
|
485
|
+
@column_names = nil
|
486
|
+
@attribute_types = nil
|
487
|
+
@content_columns = nil
|
488
|
+
@default_attributes = nil
|
489
|
+
@inheritance_column = nil unless defined?(@explicit_inheritance_column) && @explicit_inheritance_column
|
490
|
+
@attributes_builder = nil
|
491
|
+
@columns = nil
|
492
|
+
@columns_hash = nil
|
493
|
+
@schema_loaded = false
|
494
|
+
@attribute_names = nil
|
495
|
+
@yaml_encoder = nil
|
496
|
+
direct_descendants.each do |descendant|
|
497
|
+
descendant.send(:reload_schema_from_cache)
|
507
498
|
end
|
499
|
+
end
|
508
500
|
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
501
|
+
# Guesses the table name, but does not decorate it with prefix and suffix information.
|
502
|
+
def undecorated_table_name(class_name = base_class.name)
|
503
|
+
table_name = class_name.to_s.demodulize.underscore
|
504
|
+
pluralize_table_names ? table_name.pluralize : table_name
|
513
505
|
end
|
514
|
-
end
|
515
506
|
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
if
|
520
|
-
|
507
|
+
# Computes and returns a table name according to default conventions.
|
508
|
+
def compute_table_name
|
509
|
+
base = base_class
|
510
|
+
if self == base
|
511
|
+
# Nested classes are prefixed with singular parent table name.
|
512
|
+
if parent < Base && !parent.abstract_class?
|
513
|
+
contained = parent.table_name
|
514
|
+
contained = contained.singularize if parent.pluralize_table_names
|
515
|
+
contained += "_"
|
516
|
+
end
|
517
|
+
|
518
|
+
"#{full_table_name_prefix}#{contained}#{undecorated_table_name(name)}#{full_table_name_suffix}"
|
521
519
|
else
|
522
|
-
|
520
|
+
# STI subclasses always use their superclass' table.
|
521
|
+
base.table_name
|
523
522
|
end
|
524
|
-
ActiveSupport::Deprecation.warn(<<-WARNING.strip_heredoc)
|
525
|
-
The behavior of the `:point` type will be changing in Rails 5.1 to
|
526
|
-
return a `Point` object, rather than an `Array`. If you'd like to
|
527
|
-
keep the old behavior, you can add this line to #{self.name}:
|
528
|
-
|
529
|
-
attribute :#{column.name}, :legacy_point#{array_arguments}
|
530
|
-
|
531
|
-
If you'd like the new behavior today, you can add this line:
|
532
|
-
|
533
|
-
attribute :#{column.name}, :point#{array_arguments}
|
534
|
-
WARNING
|
535
523
|
end
|
536
|
-
end
|
537
524
|
end
|
538
525
|
end
|
539
526
|
end
|