Hrm - maybe I should just quote my actual code rather than the example. 
Actually, technically, no - the "hobbies" are NOT shared between people. 
So two people can't share the same hobby.

Each Person has their own list of hobbies, and one of those is their 
"favorite" and I dont want to have some "favorite" boolean.  My actual 
code has nothing to do with people and hobbies, this was just a (poor) 
example.

Thanks for the help!

Marnen Laibow-Koser wrote:
> The Barge wrote:
>> I think I've just thoroughly confused myself at this point.  I have a
>> class that has a has_many and has_one relationship that use the same
>> object.
>> 
>> Here is an example:
>> 
>> class Person < ActiveRecord::Base
>>     has_many :hobbies
>>     has_one :favorite_hobby, :class_name => "Hobby"
>> end
>> 
>> class Hobby < ActiveRecord::Base
>>     belongs_to :person
>>     belongs_to :person, :foreign_key => "favorite_hobby_id"
>> end
>> 
>> Of course, this doesn't work.  Any ideas what I need to change to get
>> this to work properly?
>> 
>> Thanks.
> 
> I think you should be using habtm for the hobbies (two people can enjoy 
> the same hobby, right?) and an additional belongs_to for the favorite. 
> This may seem counterintuitive, but remember that belongs_to is used on 
> the table with the foreign key field (which in this case is 
> people.favorite_hobby_id).  So:
> 
> class Person
>   habtm :hobbies
>   belongs_to :favorite_hobby, :class_name => 'Hobby'
> end
> 
> class Hobby
>   habtm :people
>   # reverse association probably unnecessary for favorite_hobby
> end
> 
> Best,
> --
> Marnen Laibow-Koser
> http://www.marnen.org
> [email protected]

-- 
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]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to