# User Favorites

**URL:** <https://www.ruby-forum.com/t/user-favorites/102433>\
**Category:** Rails\
**Created:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/user-favorites/102433 "2006-08-15T14:17:20Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Neil\_Edwards](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/a698b9/32.png) [@Neil\_Edwards](https://www.ruby-forum.com/u/Neil_Edwards)\
**Post date:** [August 15, 2006, 2:17pm UTC](https://www.ruby-forum.com/t/user-favorites/102433/1 "2006-08-15T14:17:20Z")

</div>

Hi there,

I’m currently creating a simple (at least so I thought) structure of  
user favorites. Basically users can add certain ‘objects’ to their  
list of favorites.

Here is my current structure (simplified)

class User  
has\_many :favorites  
end

class Book  
belongs\_to :favorites  
end

class Favorite  
belongs\_to :user  
has\_one :book  
end

The table favorite just has a two fields : user\_id, book\_id

Is this how you would do it? What method would you have in User to get  
a list of favorite books?

Thanks for reading and any thoughts you may have of this!

Neil

---

<div class="post-metadata">

**Author:** ![Neil\_Edwards](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/a698b9/32.png) [@Neil\_Edwards](https://www.ruby-forum.com/u/Neil_Edwards)\
**Post date:** [August 15, 2006, 2:18pm UTC](https://www.ruby-forum.com/t/user-favorites/102433/2 "2006-08-15T14:18:13Z")

</div>

On Friday, August 11, 2006, at 8:07 PM, Neil Edwards wrote:

> end  
> The table favorite just has a two fields : user\_id, book\_id  
> [http://lists.rubyonrails.org/mailman/listinfo/rails](http://lists.rubyonrails.org/mailman/listinfo/rails)  
> Add a

has\_many :books, :through=\>:favorites

to your User class, then you can do this…

user.books to get the favorite ones.

\_Kevin  
[www.sciwerks.com](http://www.sciwerks.com)

---

<div class="post-metadata">

**Author:** ![Neil\_Edwards](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/a698b9/32.png) [@Neil\_Edwards](https://www.ruby-forum.com/u/Neil_Edwards)\
**Post date:** [August 15, 2006, 2:20pm UTC](https://www.ruby-forum.com/t/user-favorites/102433/3 "2006-08-15T14:20:26Z")

</div>

class User  
has\_many :favorites  
has\_many :favorite\_books, :through =\> :favorites, :class\_name =\> ‘books’  
end  
class Book  
has\_many :favorites  
has\_many :favorites\_users, :through =\> :favorites, :class\_name =\>  
‘users’  
end  
class Favorites  
belongs\_to :user  
belongs\_to :book  
end

you access favorite books with user.favorite\_books  
you acess users who ‘favorited’ a book with book.favorites\_users
