Problems with associations

Hello guys, I have two tables, tasks and projects, and each model I put:

Task.rb

class Task < ActiveRecord::Base
  attr_accessible :user_id, :project_id, :name
  belongs_to :project
end

Project.rb

class Project < ActiveRecord::Base
  attr_accessible :name, :description
  has_many :tasks
end

But when I go to my prompt and I make a SELECT with task, none project
is returned.

irb(main):001:0> Task.all
  ←[1m←[36mTask Load (0.0ms)←[0m ←[1mSELECT `tasks`.* FROM `tasks` ←[0m
  ←[1m←[35mEXPLAIN (30.0ms)←[0m EXPLAIN SELECT `tasks`.* FROM `tasks`
EXPLAIN for: SELECT `tasks`.* FROM `tasks`

irb(main):001:0> Task.all

=> [#<Task id: 1, user_id: nil, project_id: 1, name:
"W\r<br>T\r<br>F\r<br>VERY\r<br...", del
eted: 0, done: 0, created_at: "2012-06-24 15:46:37", updated_at:
"2012-06-30 17:13:27">, #<Task id: 2, user_id: nil, pro
ject_id: 1, name: "Teste", deleted: 0, done: 0, created_at: "2012-06-30
17:11:27", updated_at: "2012-06-30 17:11:27">]

I guess the project name should come too ? right ?

Wrong.

What am I doing wrong ?

Misunderstanding ActiveRecord and associations :slight_smile:

Revisiting the relevant Rails guides might be a good idea.

Nothing. The project will only be fetched if you use :include in the
query. However, for one of the tasks fetched above you can still say
task.project and it will fetch the project then.

Colin

Hello Colin, thank you for your answer..

I tryed this:

irb(main):001:0> task = Task.all
  ←[1m←[36mTask Load (1.0ms)←[0m ←[1mSELECT `tasks`.* FROM `tasks` ←[0m
  ←[1m←[35mEXPLAIN (1.0ms)←[0m EXPLAIN SELECT `tasks`.* FROM `tasks`
EXPLAIN for: SELECT `tasks`.* FROM `tasks`

irb(main):001:0> task = Task.all

Model.all is clearly intended to return multiple results; it would be
more appropriate to say `tasks = Task.all`

irb(main):002:0> task.project
NoMethodError: undefined method `project' for #<Array:0x482b068>

in which case you would be calling e.g.

tasks.first.project
or
tasks.each{ |task| puts task.project.inspect }
or whatever

Thanks a lot Hassan, I tryed with tasks.first.project and everything is
OK.

Thanks again.