Ruby on Rails | Screencasts | Download | Documentation | Weblog | Community | Source

Ticket #11490: habtm_eager_loading_other_side_of_association.diff

File habtm_eager_loading_other_side_of_association.diff, 2.2 kB (added by cavalle, 5 months ago)

Tests and patch attached

  • activerecord/test/cases/associations_test.rb

    old new  
    19591959    assert_equal 1, david.projects(true).size 
    19601960    assert_equal 2, active_record.developers(true).size 
    19611961  end 
     1962   
     1963  def test_eager_loading_the_other_side_of_the_association 
     1964    assert_equal 2, developers(:david).projects.find(:all, :include => :developers).size 
     1965  end 
    19621966 
    19631967  def test_deleting_array 
    19641968    david = Developer.find(1) 
  • activerecord/lib/active_record/associations/has_and_belongs_to_many_association.rb

    old new  
    122122        def construct_sql 
    123123          interpolate_sql_options!(@reflection.options, :finder_sql) 
    124124 
     125          @join_table_alias = @owner.connection.quote_table_name("joined_#{@reflection.options[:join_table]}") 
     126           
    125127          if @reflection.options[:finder_sql] 
    126128            @finder_sql = @reflection.options[:finder_sql] 
    127129          else 
    128             @finder_sql = "#{@owner.connection.quote_table_name @reflection.options[:join_table]}.#{@reflection.primary_key_name} = #{@owner.quoted_id} " 
     130            @finder_sql = "#{@join_table_alias}.#{@reflection.primary_key_name} = #{@owner.quoted_id} " 
    129131            @finder_sql << " AND (#{conditions})" if conditions 
    130132          end 
    131  
    132           @join_sql = "INNER JOIN #{@owner.connection.quote_table_name @reflection.options[:join_table]} ON #{@reflection.quoted_table_name}.#{@reflection.klass.primary_key} = #{@owner.connection.quote_table_name @reflection.options[:join_table]}.#{@reflection.association_foreign_key}" 
     133           
     134          @join_sql = "INNER JOIN #{@owner.connection.quote_table_name @reflection.options[:join_table]} #{@join_table_alias} ON #{@reflection.quoted_table_name}.#{@reflection.klass.primary_key} = #{@join_table_alias}.#{@reflection.association_foreign_key}" 
    133135        end 
    134136 
    135137        def construct_scope