> 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 -~----------~----~----~----~------~----~------~--~---

