关于ActiveRecord关联的简单问题

时间:2009-02-24 18:40:41

标签: ruby-on-rails activerecord

我的申请有“贷款”的概念。每笔贷款都有债权人,债务人和金额。

从数据库的角度来看,我知道我希望loan表看起来像这样:

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

如果债权人/债务人ID引用用户ID(即我的用户表中行的主键)。

我的问题是我应该如何在ActiveRecord中设置它。我做不了类似的事情:

class Loan < ActiveRecord::Base
    has_one :creditor

因为这会导致rails查找“债权人”表(并且债权人都存储在用户表中)。

2 个答案:

答案 0 :(得分:4)

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

has_one :creditor, :class_name => 'User'

另外,您可能想要将此标记为:

http://api.rubyonrails.org/

下次可以节省几分钟。

答案 1 :(得分:0)

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

基本上,看起来你想要一个自我引用的多对多关系。您需要一个名为loan的连接模型,因为您在连接表中有额外的数据,因此您应该使用has-many:through。关于habtm和has-many之间的差异,这是一个很好的blog post:通过。

关于如何使用模型关系做复杂事情,有很多例子。但请注意,所有花哨的模型设置都与如何设置控制器和视图的示例不匹配。看起来教程编写者都很清楚地掌握了与控制器和视图的多对多关系的完整示例,因为它非常难。

祝你好运