提交 3f2e2580 编写于 作者: J Jon Leighton

Some small tweaks on the last commit

上级 e8874318
......@@ -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(
......
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册