aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/properties.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/properties.rb')
-rw-r--r--activerecord/lib/active_record/properties.rb11
1 files changed, 8 insertions, 3 deletions
diff --git a/activerecord/lib/active_record/properties.rb b/activerecord/lib/active_record/properties.rb
index a51dd56bcf..c99594c823 100644
--- a/activerecord/lib/active_record/properties.rb
+++ b/activerecord/lib/active_record/properties.rb
@@ -88,9 +88,14 @@ module ActiveRecord
private
def add_user_provided_columns(schema_columns)
- schema_columns.reject { |column|
- user_provided_columns.key? column.name
- } + user_provided_columns.values
+ existing_columns = schema_columns.map do |column|
+ user_provided_columns[column.name] || column
+ end
+
+ existing_column_names = existing_columns.map(&:name)
+ new_columns = user_provided_columns.except(*existing_column_names).values
+
+ existing_columns + new_columns
end
end
end