Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

cache the plural name on the reflection so we do not pay pluralize co…

…sts on joins
  • Loading branch information...
commit f261ef42cc2c8f0fc31d6e6f464bacd6ca9eb581 1 parent 2ebc564
@tenderlove tenderlove authored
View
2  activerecord/lib/active_record/associations/join_helper.rb
@@ -32,7 +32,7 @@ def table_name_for(reflection)
end
def table_alias_for(reflection, join = false)
- name = alias_tracker.pluralize(reflection.name, reflection.active_record)
+ name = reflection.plural_name.dup
name << "_#{alias_suffix}"
name << "_join" if join
name
View
19 activerecord/lib/active_record/reflection.rb
@@ -80,12 +80,6 @@ def reflect_on_all_autosave_associations
# Abstract base class for AggregateReflection and AssociationReflection. Objects of
# AggregateReflection and AssociationReflection are returned by the Reflection::ClassMethods.
class MacroReflection
- attr_reader :active_record
-
- def initialize(macro, name, options, active_record)
- @macro, @name, @options, @active_record = macro, name, options, active_record
- end
-
# Returns the name of the macro.
#
# <tt>composed_of :balance, :class_name => 'Money'</tt> returns <tt>:balance</tt>
@@ -104,6 +98,19 @@ def initialize(macro, name, options, active_record)
# <tt>has_many :clients</tt> returns +{}+
attr_reader :options
+ attr_reader :active_record
+
+ attr_reader :plural_name # :nodoc:
+
+ def initialize(macro, name, options, active_record)
+ @macro = macro
+ @name = name
+ @options = options
+ @active_record = active_record
+ @plural_name = active_record.pluralize_table_names ?
+ name.to_s.pluralize : name.to_s
+ end
+
# Returns the class for the macro.
#
# <tt>composed_of :balance, :class_name => 'Money'</tt> returns the Money class
View
2  activerecord/test/cases/reflection_test.rb
@@ -76,7 +76,7 @@ def test_integer_columns
end
def test_reflection_klass_for_nested_class_name
- reflection = MacroReflection.new(nil, nil, { :class_name => 'MyApplication::Business::Company' }, nil)
+ reflection = MacroReflection.new(:company, nil, { :class_name => 'MyApplication::Business::Company' }, ActiveRecord::Base)
assert_nothing_raised do
assert_equal MyApplication::Business::Company, reflection.klass
end

0 comments on commit f261ef4

Please sign in to comment.
Something went wrong with that request. Please try again.