-
-
Save laurocaetano/11454790ecc55d802dea to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/activerecord/lib/active_record/associations/preloader/association.rb b/activerecord/lib/active_record/associations/preloader/association.rb | |
index 69b6598..e2b1cef 100644 | |
--- a/activerecord/lib/active_record/associations/preloader/association.rb | |
+++ b/activerecord/lib/active_record/associations/preloader/association.rb | |
@@ -116,7 +116,7 @@ module ActiveRecord | |
scope.where_values = Array(values[:where]) + Array(preload_values[:where]) | |
scope.references_values = Array(values[:references]) + Array(preload_values[:references]) | |
- scope.select! preload_values[:select] || values[:select] || table[Arel.star] | |
+ scope._select! preload_values[:select] || values[:select] || table[Arel.star] | |
scope.includes! preload_values[:includes] || values[:includes] | |
if preload_values.key? :order | |
diff --git a/activerecord/lib/active_record/relation/delegation.rb b/activerecord/lib/active_record/relation/delegation.rb | |
index 21beed3..9c666dc 100644 | |
--- a/activerecord/lib/active_record/relation/delegation.rb | |
+++ b/activerecord/lib/active_record/relation/delegation.rb | |
@@ -40,7 +40,7 @@ module ActiveRecord | |
BLACKLISTED_ARRAY_METHODS = [ | |
:compact!, :flatten!, :reject!, :reverse!, :rotate!, :map!, | |
:shuffle!, :slice!, :sort!, :sort_by!, :delete_if, | |
- :keep_if, :pop, :shift, :delete_at, :compact | |
+ :keep_if, :pop, :shift, :delete_at, :compact, :select! | |
].to_set # :nodoc: | |
delegate :to_xml, :to_yaml, :length, :collect, :map, :each, :all?, :include?, :to_ary, to: :to_a | |
diff --git a/activerecord/lib/active_record/relation/merger.rb b/activerecord/lib/active_record/relation/merger.rb | |
index be44fcc..0327064 100644 | |
--- a/activerecord/lib/active_record/relation/merger.rb | |
+++ b/activerecord/lib/active_record/relation/merger.rb | |
@@ -31,7 +31,11 @@ module ActiveRecord | |
other.joins!(*v) | |
end | |
else | |
- other.send("#{k}!", v) | |
+ if k == :select | |
+ other.send("_select!", v) | |
+ else | |
+ other.send("#{k}!", v) | |
+ end | |
end | |
} | |
other | |
@@ -62,7 +66,11 @@ module ActiveRecord | |
# expensive), most of the time the value is going to be `nil` or `.blank?`, the only catch is that | |
# `false.blank?` returns `true`, so there needs to be an extra check so that explicit `false` values | |
# don't fall through the cracks. | |
- relation.send("#{name}!", *value) unless value.nil? || (value.blank? && false != value) | |
+ if name == :select | |
+ relation.send("_select!", *value) unless value.nil? || (value.blank? && false != value) | |
+ else | |
+ relation.send("#{name}!", *value) unless value.nil? || (value.blank? && false != value) | |
+ end | |
end | |
merge_multi_values | |
diff --git a/activerecord/lib/active_record/relation/query_methods.rb b/activerecord/lib/active_record/relation/query_methods.rb | |
index 4287304..5340fcb 100644 | |
--- a/activerecord/lib/active_record/relation/query_methods.rb | |
+++ b/activerecord/lib/active_record/relation/query_methods.rb | |
@@ -235,11 +235,11 @@ module ActiveRecord | |
to_a.select { |*block_args| yield(*block_args) } | |
else | |
raise ArgumentError, 'Call this with at least one field' if fields.empty? | |
- spawn.select!(*fields) | |
+ spawn._select!(*fields) | |
end | |
end | |
- def select!(*fields) # :nodoc: | |
+ def _select!(*fields) # :nodoc: | |
fields.flatten! | |
fields.map! do |field| | |
klass.attribute_alias?(field) ? klass.attribute_alias(field) : field |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment