Ruby on Rails Tuesday, June 29, 2010

I got it.

It should to break the creation statements onto a few steps:

WHEN:

>> one = Article.new(:title => 'one')

>> one.author = Author.new(:name => 'Pavel')

>> one.save

>> two = Article.new(:title => 'two')

>> two.author = Author.find(:first, :conditions => {:name => 'Pavel'})

>> two.save

THEN:

sqlite> select * from authors;
id = 1
name = Pavel

sqlite> select * from articles;
id = 1
title = 'one'
author_id = 1

id = 2
title = 'two'
author_id = 1

On 29 июн, 19:30, "P.A." <shama...@hotmail.com> wrote:
> Hi.
>
> I have a problem with the association methods which passed to a model
> through a belongs_to declaration. Here's an illustration of the issue:
>
> GIVEN:
>
> # migration
> class CreateArticlesAndAuthorsTables < ActiveRecord::Migration
>   def self.up
>     create_table :articles do |t|
>       t.text     :title
>       t.integer :author_id
>     end
>
>     create_table :authors do |t|
>       t.text :name
>     end
>   end
>
>   def self.down
>     drop_table :articles
>     drop_table :authors
>   end
> end
>
> # articles model
> class Article < ActiveRecord::Base
>   belongs_to :author
> end
>
> # authors model
> class Author < ActiverRecord::Base
>   has_many :articles
> end
>
> WHEN:
>
> >> Article.create(:title => 'one').author = Author.create(:name => 'Pavel')
> >> Article.create(:title => 'two').author = Author.find(:first, :conditions => {:name => 'Pavel'})
>
> THEN
>
> sqlite> select * from authors;
>      id = 1
> name = Pavel
>
> sqlite> select * from articles;
>            id = 1
>         title = 'one'
> author_id = null
>
>            id = 2
>         title = 'two'
> author_id = null
>
> Why do I have null values instead of ids as foreign keys in the
> articles table?
>
> Thanks.
>
> Ruby 1.9.2;
> Rails 2.3.8.

--
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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment