aboutsummaryrefslogtreecommitdiffstats
path: root/lib/arel/engines/sql/christener.rb
diff options
context:
space:
mode:
Diffstat (limited to 'lib/arel/engines/sql/christener.rb')
-rw-r--r--lib/arel/engines/sql/christener.rb13
1 files changed, 13 insertions, 0 deletions
diff --git a/lib/arel/engines/sql/christener.rb b/lib/arel/engines/sql/christener.rb
new file mode 100644
index 0000000000..c1c9325208
--- /dev/null
+++ b/lib/arel/engines/sql/christener.rb
@@ -0,0 +1,13 @@
+module Arel
+ module Sql
+ class Christener
+ def name_for(relation)
+ @used_names ||= Hash.new(0)
+ (@relation_names ||= Hash.new do |hash, relation|
+ @used_names[name = relation.name] += 1
+ hash[relation] = name + (@used_names[name] > 1 ? "_#{@used_names[name]}" : '')
+ end)[relation.table]
+ end
+ end
+ end
+end