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

Ticket #6485: polymorphic_sti_associations_1.2.3-tested.diff

File polymorphic_sti_associations_1.2.3-tested.diff, 3.3 kB (added by parasew, 3 years ago)

fix for polymorphic STI associations, for rails 1.2.3 (tested!)

  • activerecord/lib/active_record/associations/association_proxy.rb

    old new  
    100100        def set_belongs_to_association_for(record) 
    101101          if @reflection.options[:as] 
    102102            record["#{@reflection.options[:as]}_id"]   = @owner.id unless @owner.new_record? 
    103             record["#{@reflection.options[:as]}_type"] = @owner.class.base_class.name.to_s 
     103            record["#{@reflection.options[:as]}_type"] = @owner.class.name.to_s 
    104104          else 
    105105            record[@reflection.primary_key_name] = @owner.id unless @owner.new_record? 
    106106          end 
  • activerecord/lib/active_record/associations/has_many_association.rb

    old new  
    187187            when @reflection.options[:as] 
    188188              @finder_sql =  
    189189                "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_id = #{@owner.quoted_id} AND " +  
    190                 "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_type = #{@owner.class.quote_value(@owner.class.base_class.name.to_s)}" 
     190                "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_type = #{@owner.class.quote @owner.class.name.to_s}" 
    191191              @finder_sql << " AND (#{conditions})" if conditions 
    192192             
    193193            else 
  • activerecord/lib/active_record/associations/has_one_association.rb

    old new  
    6969            when @reflection.options[:as] 
    7070              @finder_sql =  
    7171                "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_id = #{@owner.quoted_id} AND " +  
    72                 "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_type = #{@owner.class.quote_value(@owner.class.base_class.name.to_s)}"           
     72                "#{@reflection.klass.table_name}.#{@reflection.options[:as]}_type = #{@owner.class.quote @owner.class.name.to_s}"           
    7373            else 
    7474              @finder_sql = "#{@reflection.table_name}.#{@reflection.primary_key_name} = #{@owner.quoted_id}" 
    7575          end 
  • activerecord/lib/active_record/associations.rb

    old new  
    704704                 
    705705                if association.updated? 
    706706                  self["#{reflection.primary_key_name}"] = association.id 
    707                   self["#{reflection.options[:foreign_type]}"] = association.class.base_class.name.to_s 
     707                  self["#{reflection.options[:foreign_type]}"] = association.class.name.to_s 
    708708                end 
    709709              end 
    710710            EOF