# \[AWDwR\] Confused about has\_one and has\_many

**URL:** <https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661>\
**Category:** Rails\
**Created:** [August 21, 2007, 10:25pm UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661 "2007-08-21T22:25:51Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![wet](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/848f3c/32.png) [@wet](https://www.ruby-forum.com/u/wet)\
**Post date:** [August 21, 2007, 10:25pm UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661/1 "2007-08-21T22:25:51Z")

</div>

Heya everyone!  
I am quite new to Rails and I am reading AWDwR. I am at Task E “Check  
Out!”. I understand it quite well, but I have a problem with the last  
playground exercise: Add a Table which contains the payment types.  
All goes well, but I am not sure whether I should use has\_many or  
has\_one(as in the Playground wiki at  
[Pragmatic Bookshelf: By Developers, For Developers](http://wiki.pragprog.com/cgi-bin/wiki.cgi/PT-E-3)).

I use the following:

class Order \< ActiveRecord::Base  
belongs\_to :pay\_type  
…  
end

and

class PayType \< ActiveRecord::Base  
has\_many :orders  
…  
end

Is this right?  
Or should I use has\_one instead of belongs\_to in Order? An order  
references to one PayType, Order has one PayType.  
I am confused, please help me.

Regards, Thomas

---

<div class="post-metadata">

**Author:** ![wet](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/848f3c/32.png) [@wet](https://www.ruby-forum.com/u/wet)\
**Post date:** [August 21, 2007, 10:52pm UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661/2 "2007-08-21T22:52:53Z")

</div>

> I am confused, please help me.  
> This might be useful to help illustrate things…

[http://mboffin.com/stuff/ruby-on-rails-data-relationships.png](http://mboffin.com/stuff/ruby-on-rails-data-relationships.png)

---

<div class="post-metadata">

**Author:** ![wet](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/848f3c/32.png) [@wet](https://www.ruby-forum.com/u/wet)\
**Post date:** [August 21, 2007, 11:19pm UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661/3 "2007-08-21T23:19:56Z")

</div>

2007/8/21, Philip H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> This might be useful to help illustrate things…
> 
> [http://mboffin.com/stuff/ruby-on-rails-data-relationships.png](http://mboffin.com/stuff/ruby-on-rails-data-relationships.png)

Ah! Thank you! So just to make it clear: An Order belongs\_to a PayType  
because the Orders table has an pay\_type\_id. And PayType has\_many  
Orders because, many Orders reference to the pay\_types table. Right?

---

<div class="post-metadata">

**Author:** ![wet](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/848f3c/32.png) [@wet](https://www.ruby-forum.com/u/wet)\
**Post date:** [August 22, 2007, 12:06am UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661/4 "2007-08-22T00:06:05Z")

</div>

> 2007/8/21, Philip H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):
> 
> > This might be useful to help illustrate things…
> > 
> > [http://mboffin.com/stuff/ruby-on-rails-data-relationships.png](http://mboffin.com/stuff/ruby-on-rails-data-relationships.png)
> 
> Ah! Thank you! So just to make it clear: An Order belongs\_to a PayType  
> because the Orders table has an pay\_type\_id. And PayType has\_many  
> Orders because, many Orders reference to the pay\_types table. Right?

Seems right yeah.

---

<div class="post-metadata">

**Author:** ![wet](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/w/848f3c/32.png) [@wet](https://www.ruby-forum.com/u/wet)\
**Post date:** [August 22, 2007, 9:38am UTC](https://www.ruby-forum.com/t/awdwr-confused-about-has-one-and-has-many/112661/5 "2007-08-22T09:38:12Z")

</div>

2007/8/22, Philip H. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid):

> Seems right yeah.

Thank you Philip!
