aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/relation/calculations.rb
diff options
context:
space:
mode:
authorYves Senn <yves.senn@gmail.com>2013-05-13 18:31:00 +0100
committerYves Senn <yves.senn@gmail.com>2013-06-09 12:53:04 +0200
commitda9b5d4a8435b744fcf278fffd6d7f1e36d4a4f2 (patch)
tree73f6e84f6cf2cdfa40e9a91da09432404c0ccb7f /activerecord/lib/active_record/relation/calculations.rb
parentdb519c0c9a8d3d4f5afa2029408de5a860e037c1 (diff)
downloadrails-da9b5d4a8435b744fcf278fffd6d7f1e36d4a4f2.tar.gz
rails-da9b5d4a8435b744fcf278fffd6d7f1e36d4a4f2.tar.bz2
rails-da9b5d4a8435b744fcf278fffd6d7f1e36d4a4f2.zip
Remove fall back and column restrictions for `count`.
Diffstat (limited to 'activerecord/lib/active_record/relation/calculations.rb')
-rw-r--r--activerecord/lib/active_record/relation/calculations.rb16
1 files changed, 6 insertions, 10 deletions
diff --git a/activerecord/lib/active_record/relation/calculations.rb b/activerecord/lib/active_record/relation/calculations.rb
index ccb48247b7..4becf3980d 100644
--- a/activerecord/lib/active_record/relation/calculations.rb
+++ b/activerecord/lib/active_record/relation/calculations.rb
@@ -207,15 +207,18 @@ module ActiveRecord
end
if operation == "count"
- column_name ||= (select_for_count || :all)
+ if select_values.present?
+ column_name ||= select_values.join(", ")
+ else
+ column_name ||= :all
+ end
unless arel.ast.grep(Arel::Nodes::OuterJoin).empty?
distinct = true
end
column_name = primary_key if column_name == :all && distinct
-
- distinct = nil if column_name =~ /\s*DISTINCT\s+/i
+ distinct = nil if column_name =~ /\s*DISTINCT[\s(]+/i
end
if group_values.any?
@@ -376,13 +379,6 @@ module ActiveRecord
column ? column.type_cast(value) : value
end
- def select_for_count
- if select_values.present?
- select = select_values.join(", ")
- select if select !~ /[,*]/
- end
- end
-
def build_count_subquery(relation, column_name, distinct)
column_alias = Arel.sql('count_column')
subquery_alias = Arel.sql('subquery_for_count')