I forgot to mention that you must to define a default scope for getting
first all Managers or Workers in each case and a before create filter to set
the role the person you are creating will have or whatever:
#manager.rb
before_create :set_manager_role
default_scope :where => {:role => "manager"}
private
def set_manager_role
self.role = "manager"
end
The same for the worker model
2010/9/11 Daniel Gaytán <[email protected]>
> 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.