You are correct, Jeff, setting the author using the create method on a
has_many works:

  test "something" do
    a1 = Author.create! :name => 'author 1'
    b = a1.books.create! :title => 'rails'
    a2 = Author.create! :name => 'author 2'
    b.update_attributes! :author_id => a2.id
    assert_equal a2.id, b.author_id
  end

And so does setting the author via the foreign key:

  test "something" do
    a1 = Author.create! :name => 'author 1'
    b = Book.create! :title => 'rails', :author_id => a1
    a2 = Author.create! :name => 'author 2'
    b.update_attributes! :author_id => a2.id
    assert_equal a2.id, b.author_id
  end

So why doesn't it like it when the belongs_to is used?  Seems odd.

On May 24, 6:04 am, Jeff Schoolcraft <[email protected]>
wrote:
> your Author should :have_many :books
> You also want to do something like this:
>
> dave = Author.create(:name => 'Dave Thomas')
> pickaxe = dave.books.build(:title => 'Programming Ruby 1.9')
>
>
>
> On Sun, May 24, 2009 at 3:46 AM, Sean K <[email protected]> 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?
>
> --
> Jeff Schoolcrafthttp://thequeue.net/blog/
--~--~---------~--~----~------------~-------~--~----~
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