2013-12-12 85 views
0

我正在构建一个Ruby on Rails应用程序,它会定期将数据转储到我的PostgreSQL安装中。现在我有两个实体,帐户和地址。如何创建自定义外键?

帐户有很多地址。到目前为止,外键关系是由Rails默认设置的,其中地址有一个名为account_id的列。然而,Rails永远不会创建数据,它只是读取它。我的转储数据的外部服务会在我的帐户记录中创建一个名为masterID的唯一ID,并将该ID放入关联地址的associatedID列中。

我需要Rails在寻找关联地址时使用masterID字段和associatedID字段。

有谁知道我会怎么做呢?

回答

1

你可以尝试这样的事:第4.1.2.5

class Account < ActiveRecord::Base 
     has_one :address , :foreign_key => 'masterID' 
    end 

读 “Active Record Associations” 的详细信息。

class Account < ActiveRecord::Base 
    has_many :addresses, foreign_key: 'masterID' 
end 

有一个在has_many docs更多信息(请查看选项):

+0

而不是在这里说”读“,使用一些真实的文本,让读者知道他们点击了什么。请参阅“[不要使用'点击此处'作为链接文本](http://www.w3.org/QA/Tips/noClickHere)”和“[6.1链接文本](http://www.w3.org/TR/WCAG10-HTML-TECHS /#link-text)“以获取更多信息。 –

+0

所以现在当我这样做时,它是否会使用主ID,但它是否将该密钥存储在关联ID列中的地址表上? –

+0

在这种情况下,您需要添加:primary_key =>'associatedID' –

0

当你宣布你has_many协会是的,你可以指定foreign_keys。 “