> Sean K wrote:
>> Under Rails 2.3.2 using a completely brand new project, I have 2
>> models:
>>
>> class Author < ActiveRecord::Base
>>  # name:string
>> end
>>
>> class Book < ActiveRecord::Base
>>  # title:string
>>  belongs_to :author # author_id
>> end
>>
>> And a simple test where i create a Book with an Author using the
>> belongs_to and then update the foreign key directly:
>>
>> require 'test_helper'
>>
>> class BookTest < ActiveSupport::TestCase
>>  test "foreign key updating" do
>>    a1 = Author.create! :name => 'author 1'
>>    b = Book.create! :title => 'rails', :author => a1
>>    a2 = Author.create! :name => 'author 2'
>>    b.update_attributes! :author_id => a2.id
>>    assert_equal a2.id, b.author_id  # author_id is still a1.id!
>>  end
>> end
>>
>> The test fails on the last line.   Am i doing something wrong or is
>> this expected behaviour?
>

Actually when you update the attribute for the one object, the ram- 
cached copy isn't updated for the other (association), so you need to  
reload it.

b.reload

you're probably better off saying:

b.author = a2

I think.

----------------------------------------------
Blog: http://random8.zenunit.com/
Twitter: http://twitter.com/random8r
Learn: http://sensei.zenunit.com/
Latest: How to use Unix basics at http://sensei.zenunit.com/



> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to