将多个列映射到同一个表

时间:2011-12-16 06:37:56

标签: ruby-on-rails ruby orm

想象一个简单的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

我如何在模型类中实现关联?

1 个答案:

答案 0 :(得分: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

希望这有帮助!