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

Changeset 5474

Show
Ignore:
Timestamp:
11/09/06 19:31:31 (2 years ago)
Author:
bitsweat
Message:

Cache inheritance_column. Closes #6592.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/activerecord/CHANGELOG

    r5459 r5474  
    11*SVN* 
     2 
     3* Cache inheritance_column.  #6592 [Stefan Kaes] 
    24 
    35* Firebird: decimal/numeric support.  #6408 [macrnic] 
  • trunk/activerecord/lib/active_record/associations.rb

    r5445 r5474  
    11711171          sql << "GROUP BY #{options[:group]} " if options[:group] 
    11721172  
    1173           add_order!(sql, options[:order]
     1173          add_order!(sql, options[:order], scope
    11741174          add_limit!(sql, options, scope) if using_limitable_reflections?(join_dependency.reflections) 
    11751175  
  • trunk/activerecord/lib/active_record/base.rb

    r5452 r5474  
    649649      end 
    650650 
    651       # Defines the column name for use with single table inheritance -- can be overridden in subclasses. 
     651      # Defines the column name for use with single table inheritance 
     652      # -- can be set in subclasses like so: self.inheritance_column = "type_id" 
    652653      def inheritance_column 
    653         "type" 
     654        @inheritance_column ||= "type".freeze 
    654655      end 
    655656 
     
    801802      def reset_column_information 
    802803        read_methods.each { |name| undef_method(name) } 
    803         @column_names = @columns = @columns_hash = @content_columns = @dynamic_methods_hash = @read_methods = nil 
     804        @column_names = @columns = @columns_hash = @content_columns = @dynamic_methods_hash = @read_methods = @inheritance_column = nil 
    804805      end 
    805806 
     
    10581059                # Ignore type if no column is present since it was probably 
    10591060                # pulled in from a sloppy join. 
    1060                 unless self.columns_hash.include?(inheritance_column) 
     1061                unless columns_hash.include?(inheritance_column) 
    10611062                  allocate 
    10621063 
  • trunk/activerecord/test/inheritance_test.rb

    r4848 r5474  
    3131    switch_to_alt_inheritance_column 
    3232    test_inheritance_find 
     33    switch_to_default_inheritance_column 
    3334  end 
    3435 
     
    4243    switch_to_alt_inheritance_column 
    4344    test_inheritance_find_all 
     45    switch_to_default_inheritance_column 
    4446  end 
    4547 
     
    5658    switch_to_alt_inheritance_column 
    5759    test_inheritance_save 
     60    switch_to_default_inheritance_column 
    5861  end 
    5962 
     
    6770    switch_to_alt_inheritance_column 
    6871    test_inheritance_condition 
     72    switch_to_default_inheritance_column 
    6973  end 
    7074 
     
    7781    switch_to_alt_inheritance_column 
    7882    test_finding_incorrect_type_data 
     83    switch_to_default_inheritance_column 
    7984  end 
    8085 
     
    8893    switch_to_alt_inheritance_column 
    8994    test_update_all_within_inheritance 
     95    switch_to_default_inheritance_column 
    9096  end 
    9197 
     
    99105    switch_to_alt_inheritance_column 
    100106    test_destroy_all_within_inheritance 
     107    switch_to_default_inheritance_column 
    101108  end 
    102109 
     
    110117    switch_to_alt_inheritance_column 
    111118    test_find_first_within_inheritance 
     119    switch_to_default_inheritance_column 
    112120  end 
    113121 
     
    125133    switch_to_alt_inheritance_column 
    126134    test_complex_inheritance 
     135    switch_to_default_inheritance_column 
    127136  end 
    128137 
     
    139148        c.save 
    140149      end 
    141      
    142       def Company.inheritance_column() "ruby_type" end 
     150      [ Company, Firm, Client].each { |klass| klass.reset_column_information } 
     151      def Company.inheritance_column; @inheritance_column ||= "ruby_type"; end 
     152    end 
     153    def switch_to_default_inheritance_column 
     154      [ Company, Firm, Client].each { |klass| klass.reset_column_information } 
    143155    end 
    144156end