I think this could work:

class Task < ActiveRecord::Base
  belongs_to :worker
  belongs_to :manager
end

class Person < ActiveRecord::Base
end

class Manager < Person
  has_many :tasks
end

class Worker < Person
  has_many :tasks
end

task = Task.create
manager = Manager.create
worker = Worker.create

task.manager = manager
task.worker = worker


You don't need to create two tables, only to files more... extending the
model that is related to the table.

Daniel Gaytán

2010/9/11 Brian Ablaza <[email protected]>

> I have a People table and a Tasks table. Some People are Managers, some
> are Workers. Each Task has a Manager and a Worker.
>
> How do I define the relationships? I tried a STI setup, where Managers
> and Workers inherit from People, and People has a type column. In my
> Task table, I have worker_id and manager_id rows. Then:
>
> task belongs_to worker
> task belongs_to manager
> worker has_many tasks
> manager has_many tasks
>
> But when I ask for task.worker, or task.manager, it throws an error.
>
> How can I do this without separate Worker and Manager tables?
> --
> Posted via http://www.ruby-forum.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]<rubyonrails-talk%[email protected]>
> .
> For more options, visit this group at
> http://groups.google.com/group/rubyonrails-talk?hl=en.
>
>

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