Should I use has_one or belongs_to?

I have a one-to-one relationship between 2 models, should I store each
others id on both objects or just in one?

Thank you,

Rodrigo

use has_one and belongs_to and i guess: store each others for maintain
integrity is the best way, always
Em 30/06/2011, s 19:42, Rodrigo R. escreveu:

Leoncio C. wrote in post #1008516:

use has_one and belongs_to and i guess: store each others for maintain
integrity is the best way, always
Em 30/06/2011, s 19:42, Rodrigo R. escreveu:

Um. No you only need a foreign key on one side. The side that has the
foreign key uses belongs_to. The other side, without a foreign key, uses
has_one.

The setup is just like a one-to-many association. The only difference is
that has_one provides the one related record as an object instead of an
array of objects.

class Person < ActiveRecord::Base
has_one :address
end

class Address < ActiveRecord::Base
belongs_to :person
end

people

| id | name |

addresses

| id | person_id | address | city | state | zip |

Well, i think that in the given example, u could put has_one :dog in the
Owner Controller and ALSO a belongs_to :owner in the Dog’s controller.
That way, you’ll have the relations of both controllers explicit in each
of them improving readability.

Em 1/7/2011 05:48, Jim Ruther N. escreveu:

On Fri, Jul 1, 2011 at 6:50 AM, Leoncio C.
[email protected]wrote:

use has_one and belongs_to and i guess: store each others for maintain
integrity is the best way, always
Em 30/06/2011, s 19:42, Rodrigo R. escreveu:

I have a one-to-one relationship between 2 models, should I store each
others id on both objects or just in one?

for code readability’s sake, you need to figure out where to put the
foreign
but not on both. for example, you have a 1-1
relationship between a dog and an owner. it’s better if you add the
foreign
key to the dogs table.

Class Dog < ActiveRecord::Base
belongs_to :owner # owner_id is in the dogs table
end

Class Owner < ActiveRecord::Base
has_one :dog
end

one more thing to consider is through associations. you can’t add a
:through option to belongs_to.

[email protected].
http://groups.google.com/group/rubyonrails-talk?hl=en.

On Fri, Jul 1, 2011 at 9:44 PM, VitorHP [email protected] wrote:

**
Well, i think that in the given example, u could put has_one :dog in the
Owner Controller and ALSO a belongs_to :owner in the Dog’s controller. That
way, you’ll have the relations of both controllers explicit in each of them
improving readability.

this is confusing. you can’t call has_one and belongs_to in a
controller.

Class Dog < ActiveRecord::Base

To unsubscribe from this group, send email to
For more options, visit this group at
“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.

Oh Right! I got the names wrong. My bad. xD

Em 1/7/2011 11:22, leoncio caminha escreveu:

exact! this is a model task, remember guys, MVC, this is a model task,
paper
of model.

2011/7/1 Jim Ruther N. [email protected]