Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Browse files

Some small tweaks on the last commit

  • Loading branch information...
commit 3f2e25805d56440a4ef2a7a9ae6b99be04e6357b 1 parent e887431
@jonleighton jonleighton authored
View
22 activerecord/lib/active_record/associations.rb
@@ -2239,25 +2239,13 @@ def aliased_table_name
protected
- def table_alias_for(reflection)
- name = pluralize(reflection.name)
+ def table_alias_for(reflection, join = false)
+ name = alias_tracker.pluralize(reflection.name)
name << "_#{parent_table_name}"
- name << "_join" if reflection != self.reflection
+ name << "_join" if join
name
end
- def pluralize(table_name)
- ActiveRecord::Base.pluralize_table_names ? table_name.to_s.pluralize : table_name
- end
-
- def table_name_and_alias_for(table_name, table_alias)
- "#{table_name} #{table_alias if table_name != table_alias}".strip
- end
-
- def table_name_and_alias
- table_name_and_alias_for(table_name, aliased_table_name)
- end
-
def interpolate_sql(sql)
instance_eval("%@#{sql.gsub('@', '\@')}@", __FILE__, __LINE__)
end
@@ -2271,7 +2259,7 @@ def setup_tables
@tables = through_reflection_chain.map do |reflection|
aliased_table_name = alias_tracker.aliased_name_for(
reflection.table_name,
- table_alias_for(reflection)
+ table_alias_for(reflection, reflection != self.reflection)
)
table = Arel::Table.new(
@@ -2284,7 +2272,7 @@ def setup_tables
if reflection.macro == :has_and_belongs_to_many
aliased_join_table_name = alias_tracker.aliased_name_for(
reflection.options[:join_table],
- table_alias_for(reflection)
+ table_alias_for(reflection, true)
)
join_table = Arel::Table.new(
View
9 activerecord/lib/active_record/associations/alias_tracker.rb
@@ -2,11 +2,12 @@
module ActiveRecord
module Associations
- # Keeps track of table aliases for ActiveRecord::Associations::ClassMethods::JoinDependency
+ # Keeps track of table aliases for ActiveRecord::Associations::ClassMethods::JoinDependency and
+ # ActiveRecord::Associations::ThroughAssociationScope
class AliasTracker # :nodoc:
# other_sql is some other sql which might conflict with the aliases we assign here. Therefore
# we store other_sql so that we can scan it before assigning a specific name.
- def initialize(other_sql)
+ def initialize(other_sql = nil)
@aliases = Hash.new
@other_sql = other_sql.to_s.downcase
end
@@ -36,6 +37,10 @@ def aliased_name_for(table_name, aliased_name = nil)
end
end
end
+
+ def pluralize(table_name)
+ ActiveRecord::Base.pluralize_table_names ? table_name.to_s.pluralize : table_name
+ end
private
Please sign in to comment.
Something went wrong with that request. Please try again.