aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/model_schema.rb
diff options
context:
space:
mode:
authorSean Griffin <sean@seantheprogrammer.com>2015-11-07 08:17:25 -0700
committerSean Griffin <sean@seantheprogrammer.com>2015-11-07 08:20:34 -0700
commit9deb6ababe87393fb7806c5097faf51f2852deda (patch)
treeeace414b21e78b670d92447d3ea44993463a711d /activerecord/lib/active_record/model_schema.rb
parentd238cb88a33a9fb2b53f63ce28d38a3e1a6a1ead (diff)
downloadrails-9deb6ababe87393fb7806c5097faf51f2852deda.tar.gz
rails-9deb6ababe87393fb7806c5097faf51f2852deda.tar.bz2
rails-9deb6ababe87393fb7806c5097faf51f2852deda.zip
Ensure `#reset_column_information` clears child classes as well
I've added a redundant test for this under the attributes API as well, as that also causes this bug to manifest through public API (and demonstrates that calling `reset_column_information` on the child classes would be insufficient) Since children of a class should always share a table with their parent, just reloading the schema from the cache should be sufficient here. `reload_schema_from_cache` should probably become public and `# :nodoc:`, but I'd rather avoid the git churn here. Fixes #22057
Diffstat (limited to 'activerecord/lib/active_record/model_schema.rb')
-rw-r--r--activerecord/lib/active_record/model_schema.rb3
1 files changed, 3 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb
index a9bd094a66..e3f304b0af 100644
--- a/activerecord/lib/active_record/model_schema.rb
+++ b/activerecord/lib/active_record/model_schema.rb
@@ -339,6 +339,9 @@ module ActiveRecord
@columns = nil
@columns_hash = nil
@attribute_names = nil
+ direct_descendants.each do |descendant|
+ descendant.send(:reload_schema_from_cache)
+ end
end
# Guesses the table name, but does not decorate it with prefix and suffix information.