2009-02-24 111 views
1

我的应用程序具有“贷款”的概念。每笔贷款都有债权人,债务人和金额。关于ActiveRecord协会的简单问题

从数据库的角度来看,我知道我想要的贷款表看起来像这样:

|id|Amount|creditor_id|debtor_id| 
| 1| 100|   5|  7| 

凡债权人/债务人的id引用的用户ID(即,为我的用户表行的主键)。

我的问题是我应该如何在ActiveRecord中设置它。我不能这样做:

class Loan < ActiveRecord::Base 
    has_one :creditor 

因为这将导致轨寻找一个“债权人”表(和债权人都存储在用户表)。

回答

4

该选项(自然地,在Rdoc中有详细记录)是:class_name。我相信语法是:

has_one :creditor, :class_name => 'User' 

此外,你可能想书签:

http://api.rubyonrails.org/

能在下一次保存几分钟。

+0

一般,但http://api.rubyonrails.org/有这样一个可怕的用户界面! – 2009-02-24 21:23:40

0

这并不像看起来那么容易。用户既可以是债权人又可以是债务人?他们可以有多个贷款吗?

基本上,它看起来像你想要一个自我指涉的多对多关系。你需要一个叫做贷款的连接模型,因为你的连接表中有额外的数据,所以你应该使用has-many:through。关于habtm和has-many:through之间的区别,这里有一个很好的blog post

有很多关于如何用模型关系做复杂事情的例子。尽管如此,所有的花式模型设置都没有与如何设置控制器和视图的例子相匹配。看起来,教程编写者都很好地掌握了与控制器和视图的多对多关系的完整示例,因为它非常困难。

祝你好运