Changeset 4758
- Timestamp:
- 08/14/06 07:19:47 (2 years ago)
- Files:
-
- trunk/activerecord/CHANGELOG (modified) (1 diff)
- trunk/activerecord/lib/active_record/associations.rb (modified) (2 diffs)
- trunk/activerecord/test/associations_cascaded_eager_loading_test.rb (modified) (1 diff)
- trunk/activerecord/test/fixtures/mixin.rb (modified) (1 diff)
- trunk/activerecord/test/fixtures/mixins.yml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activerecord/CHANGELOG
r4752 r4758 1 1 *SVN* 2 3 * Fix for deep includes on the same association. [richcollins@gmail.com] 2 4 3 5 * Tweak fixtures so they don't try to use a non-ActiveRecord class. [Kevin Clark] trunk/activerecord/lib/active_record/associations.rb
r4721 r4758 1394 1394 unless join_dependency.table_aliases[aliased_table_name].zero? 1395 1395 # if the table name has been used, then use an alias 1396 @aliased_table_name = active_record.connection.table_alias_for "#{pluralize(reflection.name)}_#{parent_table_name}"1396 @aliased_table_name = cascade_alias 1397 1397 table_index = join_dependency.table_aliases[aliased_table_name] 1398 join_dependency.table_aliases[@aliased_table_name] += 1 1398 1399 @aliased_table_name = @aliased_table_name[0..active_record.connection.table_alias_length-3] + "_#{table_index+1}" if table_index > 0 1399 end 1400 join_dependency.table_aliases[aliased_table_name] += 1 1400 else 1401 join_dependency.table_aliases[aliased_table_name] += 1 1402 end 1401 1403 1402 1404 if reflection.macro == :has_and_belongs_to_many || (reflection.macro == :has_many && reflection.options[:through]) … … 1530 1532 instance_eval("%@#{sql.gsub('@', '\@')}@") 1531 1533 end 1534 1535 private 1536 def cascade_alias 1537 active_record.connection.table_alias_for "#{pluralize(reflection.name)}_#{parent_table_name}" 1538 end 1532 1539 end 1533 1540 end trunk/activerecord/test/associations_cascaded_eager_loading_test.rb
r4325 r4758 104 104 end 105 105 end 106 107 def test_eager_association_loading_with_recursive_cascaded_three_levels 108 root_node = RecursivelyCascadedTreeMixin.find(:first, :include=>{:children=>{:children=>:children}}, :order => 'mixins.id') 109 assert_equal mixins(:recursively_cascaded_tree_4), assert_no_queries { root_node.children.first.children.first.children.first } 110 end 106 111 end trunk/activerecord/test/fixtures/mixin.rb
r3734 r4758 9 9 class TreeMixinWithoutOrder < Mixin 10 10 acts_as_tree :foreign_key => "parent_id" 11 end 12 13 class RecursivelyCascadedTreeMixin < Mixin 14 acts_as_tree :foreign_key => "parent_id" 11 15 end 12 16 trunk/activerecord/test/fixtures/mixins.yml
r2964 r4758 39 39 type: TreeMixinWithoutOrder 40 40 parent_id: 41 42 recursively_cascaded_tree_1: 43 id: 5005 44 type: RecursivelyCascadedTreeMixin 45 parent_id: 46 47 recursively_cascaded_tree_2: 48 id: 5006 49 type: RecursivelyCascadedTreeMixin 50 parent_id: 5005 51 52 recursively_cascaded_tree_3: 53 id: 5007 54 type: RecursivelyCascadedTreeMixin 55 parent_id: 5006 56 57 recursively_cascaded_tree_4: 58 id: 5008 59 type: RecursivelyCascadedTreeMixin 60 parent_id: 5007 41 61 42 62 # List mixins