From e95d2a0f2f51298aebc5201551860fe8e7f8ece6 Mon Sep 17 00:00:00 2001 From: Matthew Draper Date: Mon, 5 Jun 2017 03:28:12 +0930 Subject: Don't mark the schema loaded until it's really finished load_schema! is overridden by attribute modules, so we need to wait until it has returned. --- activerecord/lib/active_record/model_schema.rb | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) (limited to 'activerecord/lib/active_record/model_schema.rb') diff --git a/activerecord/lib/active_record/model_schema.rb b/activerecord/lib/active_record/model_schema.rb index 1179a60e9b..14e0f5bff7 100644 --- a/activerecord/lib/active_record/model_schema.rb +++ b/activerecord/lib/active_record/model_schema.rb @@ -446,7 +446,11 @@ module ActiveRecord def load_schema return if schema_loaded? @load_schema_monitor.synchronize do - load_schema! unless defined?(@columns_hash) && @columns_hash + return if defined?(@columns_hash) && @columns_hash + + load_schema! + + @schema_loaded = true end end @@ -460,8 +464,6 @@ module ActiveRecord user_provided_default: false ) end - - @schema_loaded = true end def reload_schema_from_cache -- cgit v1.2.3