Forum: Ruby on Rails Having two columns in a model point to another table

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
David Balatero (Guest)
on 2006-05-31 03:24
(Received via mailing list)
Hey, I'm kind of new to Rails, and would appreciate it if someone could
point me in the right direction on this.

I have a "users" table in my application, and I wanted to set up a
"debts"
table, to store debts between users.

My current table structure for "debts" is

CREATE TABLE debts (
 id int not null auto_increment,
 owed_user_id int not null,    # User that is owed the money
 owee_user_id int not null,    # User that owes money to the owed_user
 reason text not null,             # Reason for debt
 amount decimal(10,2) not null,
 primary key(id)
);

In this case, both owed_user_id and owee_user_id point to a different
user
in the Users table. How can I represent this in my model class for Users
and
Debts using Rails associations? None of the associations seemed to fit
for
me. Maybe I'm thinking of the table structure in the wrong manner, and
there's a better way to do that given the constraints of Rails
associations.

Any help would be appreciated! Thanks!


David Balatero
Josh S. (Guest)
on 2006-05-31 03:39
David Balatero wrote:
> Hey, I'm kind of new to Rails, and would appreciate it if someone could
> point me in the right direction on this.
>
> I have a "users" table in my application, and I wanted to set up a
> "debts"
> table, to store debts between users.
>
> My current table structure for "debts" is
>
> CREATE TABLE debts (
>  id int not null auto_increment,
>  owed_user_id int not null,    # User that is owed the money
>  owee_user_id int not null,    # User that owes money to the owed_user
>  reason text not null,             # Reason for debt
>  amount decimal(10,2) not null,
>  primary key(id)
> );

This is a job for a self-referential has_many :through association.  You
can read an example of that here:

http://blog.hasmanythrough.com/articles/2006/04/21...

You'd set up your users where I have nodes in my example, and debts
would be edges. Creditors and debtors would go in the place of sources
and sinks.  Have fun!

--
Josh S.
http://blog.hasmanythrough.com
This topic is locked and can not be replied to.