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

Ticket #9694: sti_conds_skip_abstract_classes.diff

File sti_conds_skip_abstract_classes.diff, 1.1 kB (added by mrj, 1 year ago)

Untested Patch

  • base.rb

    old new  
    11971197 
    11981198        def type_condition 
    11991199          quoted_inheritance_column = connection.quote_column_name(inheritance_column) 
    1200           type_condition = subclasses.inject("#{table_name}.#{quoted_inheritance_column} = '#{name.demodulize}' ") do |condition, subclass| 
    1201             condition << "OR #{table_name}.#{quoted_inheritance_column} = '#{subclass.name.demodulize}'
     1200          type_condition = subclasses.inject(abstract_class? ? [] : ["#{table_name}.#{quoted_inheritance_column} = '#{name.demodulize}' "]) do |condition, subclass| 
     1201            subclass.abstract_class? ? condition : condition << "#{table_name}.#{quoted_inheritance_column} = '#{subclass.name.demodulize}'
    12021202          end 
    12031203 
    1204           " (#{type_condition}) " 
     1204          type_condition.empty? ? nil : " (#{type_condition.join(' OR ')}) " 
    12051205        end 
    12061206 
    12071207        # Guesses the table name, but does not decorate it with prefix and suffix information.