aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/alias_tracker.rb
diff options
context:
space:
mode:
authorXavier Noria <fxn@hashref.com>2011-08-31 04:27:59 -0700
committerXavier Noria <fxn@hashref.com>2011-08-31 04:27:59 -0700
commit47b8415bef7edb25bb750685d6f9331f044bbd80 (patch)
treee408066b7c5df43b2e1b2fbc4f0ff5478f5efdab /activerecord/lib/active_record/associations/alias_tracker.rb
parent6d772c0953b418da774b2c3bf5cc297508669da7 (diff)
parente746c4047cd34accd7f63aa5d09cbb35011c24e2 (diff)
downloadrails-47b8415bef7edb25bb750685d6f9331f044bbd80.tar.gz
rails-47b8415bef7edb25bb750685d6f9331f044bbd80.tar.bz2
rails-47b8415bef7edb25bb750685d6f9331f044bbd80.zip
Merge branch 'master' of git://github.com/rails/rails
Diffstat (limited to 'activerecord/lib/active_record/associations/alias_tracker.rb')
-rw-r--r--activerecord/lib/active_record/associations/alias_tracker.rb18
1 files changed, 12 insertions, 6 deletions
diff --git a/activerecord/lib/active_record/associations/alias_tracker.rb b/activerecord/lib/active_record/associations/alias_tracker.rb
index 92ed844a2e..0248c7483c 100644
--- a/activerecord/lib/active_record/associations/alias_tracker.rb
+++ b/activerecord/lib/active_record/associations/alias_tracker.rb
@@ -53,12 +53,18 @@ module ActiveRecord
# quoted_name should be downcased as some database adapters (Oracle) return quoted name in uppercase
quoted_name = connection.quote_table_name(name).downcase
- table_joins.map { |join|
- # Table names + table aliases
- join.left.downcase.scan(
- /join(?:\s+\w+)?\s+(\S+\s+)?#{quoted_name}\son/
- ).size
- }.sum
+ counts = table_joins.map do |join|
+ if join.is_a?(Arel::Nodes::StringJoin)
+ # Table names + table aliases
+ join.left.downcase.scan(
+ /join(?:\s+\w+)?\s+(\S+\s+)?#{quoted_name}\son/
+ ).size
+ else
+ join.left.table_name == name ? 1 : 0
+ end
+ end
+
+ counts.sum
end
def truncate(name)