2011-12-16 66 views
0

想象一个简单的I-O-U应用程序,其中有User模型和Transaction模型。将多个列映射到同一张表

User表有以下几列:

  • ID

Transaction表有以下几列:

  • lender_id(外键User.id
  • borrower_id(外键User.id
  • 日期

用户只能借出或借入到存在于User表另一个用户。

一个例子是:

User: 

id | name 
------------- 
    1 | name A 
    2 | name B 
    3 | name C 

Transaction: 

lender_id | borrower_id | date 
---------------------------------- 
    1  |  2  | date1 
    1  |  3  | date2 
    3  |  2  | date3 

我将如何实现模型类的关联?

+0

你需要[belongs_to](http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-belongs_to)吗? – aishwarya 2011-12-16 06:40:40

回答

2

在交易:

belongs_to :lender, :class_name => "User" 
belongs_to :borrower, :class_name => "User" 

在用户:

has_many :loans, :class_name => "Transaction", :foreign_key => "lender_id" 
has_many :debts, :class_name => "Transaction", :foreign_key => "borrower_id" 

这给了你:

u = User.first 
u.loans # [transaction, transaction, ...] 
u.debts # [transaction, transaction, ...] 

而且

t = Transaction.first 
t.lender # User 
t.borrower # User 

希望这有助于!

相关问题