aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/has_many_association.rb
diff options
context:
space:
mode:
authorYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-22 12:04:02 -0700
committerYehuda Katz + Carl Lerche <ykatz+clerche@engineyard.com>2009-06-22 12:04:02 -0700
commit80f1f863cd0f9cba89079511282de5710a2e1832 (patch)
tree16a0df573a65d4cfc922a07b54b4a44d902e81dc /activerecord/lib/active_record/associations/has_many_association.rb
parent4851ca9e13a4317342df02ae25b1929340523f7a (diff)
downloadrails-80f1f863cd0f9cba89079511282de5710a2e1832.tar.gz
rails-80f1f863cd0f9cba89079511282de5710a2e1832.tar.bz2
rails-80f1f863cd0f9cba89079511282de5710a2e1832.zip
Revert "Generate proper :counter_sql from :finder_sql when there is a newline character immediately following 'SELECT' [#2118 state:resolved]"
This reverts commit 4851ca9e13a4317342df02ae25b1929340523f7a. The tests do not pass for postgresql.
Diffstat (limited to 'activerecord/lib/active_record/associations/has_many_association.rb')
-rw-r--r--activerecord/lib/active_record/associations/has_many_association.rb10
1 files changed, 9 insertions, 1 deletions
diff --git a/activerecord/lib/active_record/associations/has_many_association.rb b/activerecord/lib/active_record/associations/has_many_association.rb
index e4b631bc54..73dd50dd07 100644
--- a/activerecord/lib/active_record/associations/has_many_association.rb
+++ b/activerecord/lib/active_record/associations/has_many_association.rb
@@ -97,7 +97,15 @@ module ActiveRecord
@finder_sql << " AND (#{conditions})" if conditions
end
- construct_counter_sql
+ if @reflection.options[:counter_sql]
+ @counter_sql = interpolate_sql(@reflection.options[:counter_sql])
+ elsif @reflection.options[:finder_sql]
+ # replace the SELECT clause with COUNT(*), preserving any hints within /* ... */
+ @reflection.options[:counter_sql] = @reflection.options[:finder_sql].sub(/SELECT (\/\*.*?\*\/ )?(.*)\bFROM\b/im) { "SELECT #{$1}COUNT(*) FROM" }
+ @counter_sql = interpolate_sql(@reflection.options[:counter_sql])
+ else
+ @counter_sql = @finder_sql
+ end
end
def construct_scope