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

Changeset 4773

Show
Ignore:
Timestamp:
08/16/06 16:05:48 (2 years ago)
Author:
xal
Message:

Fixed a bug which would cause .save to fail after trying to access a empty has_one association on a unsaved record.

Files:

Legend:

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

    r4770 r4773  
    11*SVN* 
     2 
     3* Fixed a bug which would cause .save to fail after trying to access a empty has_one association on a unsaved record. [Tobias Luetke]  
    24 
    35* Nested classes are given table names prefixed by the singular form of the parent's table name. [Jeremy Kemper] 
  • trunk/activerecord/lib/active_record/associations/association_proxy.rb

    r4721 r4773  
    120120      private 
    121121        def method_missing(method, *args, &block) 
    122           load_target 
    123           @target.send(method, *args, &block) 
     122          if load_target         
     123            @target.send(method, *args, &block) 
     124          end 
    124125        end 
    125126 
    126127        def load_target 
    127           if !@owner.new_record? || foreign_key_present 
    128             begin 
    129               @target = find_target unless loaded? 
    130             rescue ActiveRecord::RecordNotFound 
    131               reset 
    132             end 
     128          if !loaded? and (!@owner.new_record? || foreign_key_present) 
     129            @target = find_target 
    133130          end 
    134131 
    135           loaded 
    136           target 
     132          @loaded = true 
     133          @target 
     134        rescue ActiveRecord::RecordNotFound 
     135          reset 
    137136        end 
    138137 
  • trunk/activerecord/test/associations_test.rb

    r4721 r4773  
    314314    assert_queries(2) { firm.save! } 
    315315  end 
     316   
     317  def test_save_still_works_after_accessing_nil_has_one 
     318    jp = Company.new :name => 'Jaded Pixel' 
     319    jp.dummy_account.nil? 
     320     
     321    assert_nothing_raised do 
     322      jp.save! 
     323    end     
     324  end 
     325   
    316326end 
    317327