aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/calculations.rb
diff options
context:
space:
mode:
authorBen Toews <mastahyeti@gmail.com>2017-10-11 13:16:57 -0600
committerMatthew Draper <matthew@trebex.net>2017-11-09 22:42:15 +1030
commit798557145c727b2abef2487783f02e57f04197c9 (patch)
tree82f1ff95da36955b72911b60197421e3d32d1e24 /activerecord/lib/active_record/relation/calculations.rb
parent5180fe2cd8233169935065efe8762bd5d7b2709c (diff)
downloadrails-798557145c727b2abef2487783f02e57f04197c9.tar.gz
rails-798557145c727b2abef2487783f02e57f04197c9.tar.bz2
rails-798557145c727b2abef2487783f02e57f04197c9.zip
try using regexes
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb12
1 files changed, 3 insertions, 9 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index 75795fe493..d49472fc70 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -175,7 +175,7 @@ module ActiveRecord
# See also #ids.
#
def pluck(*column_names)
- if loaded? && (column_names.map(&:to_s) - @klass.attribute_names_and_aliases).empty?
+ if loaded? && (column_names.map(&:to_s) - @klass.attribute_names - @klass.attribute_aliases.keys).empty?
return records.pluck(*column_names)
end
@@ -183,10 +183,10 @@ module ActiveRecord
relation = apply_join_dependency
relation.pluck(*column_names)
else
- enforce_raw_sql_whitelist(column_names, whitelist: allowed_pluck_columns)
+ enforce_raw_sql_whitelist(column_names)
relation = spawn
relation.select_values = column_names.map { |cn|
- @klass.respond_to_attribute?(cn) ? arel_attribute(cn) : cn
+ @klass.has_attribute?(cn) || @klass.attribute_alias?(cn) ? arel_attribute(cn) : cn
}
result = skip_query_cache_if_necessary { klass.connection.select_all(relation.arel, nil) }
result.cast_values(klass.attribute_types)
@@ -203,12 +203,6 @@ module ActiveRecord
private
- def allowed_pluck_columns
- @klass.attribute_names_and_aliases.map do |name|
- [name, "#{table_name}.#{name}"]
- end.flatten
- end
-
def has_include?(column_name)
eager_loading? || (includes_values.present? && column_name && column_name != :all)
end