# Belongs\_to (polymorphic) or has\_many (through)

**URL:** <https://www.ruby-forum.com/t/belongs-to-polymorphic-or-has-many-through/181881>\
**Category:** Rails\
**Created:** [January 19, 2010, 6:36pm UTC](https://www.ruby-forum.com/t/belongs-to-polymorphic-or-has-many-through/181881 "2010-01-19T18:36:12Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![nilskassube](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/n/db5fbb/32.png) [@nilskassube](https://www.ruby-forum.com/u/nilskassube)\
**Post date:** [January 19, 2010, 6:36pm UTC](https://www.ruby-forum.com/t/belongs-to-polymorphic-or-has-many-through/181881/1 "2010-01-19T18:36:12Z")

</div>

Hi,

I’d be sooo happy I any of you could help me out with a problem I’m  
currently stuck with 🙂

### Basic info

I’m on Rails 2.3.5 and love using the formtastic formbuilder 🙂

### What I’m working on

I’m currently trying to build a little  
demo app where my friends and I are able to manage all the things we  
borrowed each other. (I know there are apps like this on the internet,  
I just wanted to built my own to get used to rails :-)).

So wanted to build a form where I can enter:

- the name of the thing I’m borrowing to someone
- who I’m borrowing the thing to

–\> I set up the Models  
User  
name … (default hobo user model)

Loan  
name:string  
reminder:date

### PROBLEM

Now I wanted to set up 2 relations between the model…

- Who is giving away the loan
- Who borrows the loan

???–\> What do you think would be the most clever way to set up these  
relations for my “use case”???

### Idea 1

Loan  
belongs\_to :lender, :polymorphic =\> true  
belongs\_to :borrower, :polymorphic =\> true

User  
has\_many :loans, :as =\> :lender  
has\_many :loans, :as =\> :borrower

–\> Does this work anyway??? (User.loans would be ambiguous,  
right?)  
–\> how could I create a form to create a new Loan and select the  
borrower from a select (the app would assign me as the lender in the  
controller or by hidden field I guess)

### Idea 2

Loan  
has\_many :loan\_assignments, :dependent =\> :destroy  
has\_many :users, :through =\> :loan\_assignments, :accessible =\>  
true

User  
has\_many :loan\_assignments, :dependent =\> :destroy  
has\_many :loans, :through =\> :loan\_assignments

–\> How do I restrict the form, so I can only select 1 borrower  
in /loans/new ???

* * *

P.S. Sorry for my English, it’s not my native tongue 🙂
