2010-07-23 83 views
0

我正在使用現有的數據庫與導軌應用程序。導軌模型 - 兩個表具有相同的主鍵和外鍵字段

我無法更改表名或列名。

比方說,表中的一個是「發票」和表2是「訂單」

他們都有那個叫同樣的事情一個主鍵,可以說「ORDER_ID」

發票可以找到它的順序通過查看訂單表中的主鍵「order_id」。

對於查找其發票的訂單反之亦然。

發票可以有但並不總是有一個訂單(除了訂單以外,您可能會被開具發票,例如通過查找「work_orders」的主鍵位置中的「order_id」找到的「work_order」表。所以,發票可能有一個work_order或訂單。

訂單總是有發票 work_orders總是有發票

我試着在模型中找出類。

你設置主鍵和外鍵都是一樣的東西?那麼belongs_to呢?這個數據庫是建立起來的,沒有任何東西屬於任何東西,它們只是通過相同的值「order_id」來引用對方。會是這樣嗎?

class Invoice < ActiveRecord::Base 
    set_primary_key(:order_id) 
    set_foreign_key(:order_id) 
end 

- 喀嚓 -

class Order < ActiveRecord::Base 
    set_primary_key(:order_id) 
    set_foreign_key(:order_id) 
end 

......而同樣的工作秩序。

class WorkOrder < ActiveRecord::Base 
    set_primary_key(:order_id) 
    set_foreign_key(:order_id) 
end 

這是正確的嗎?它似乎沒有辦法做到這一點,但這個DB是可怕的。

所有belongs_to的東西呢?

讓我知道我是否遺漏了任何東西。

謝謝!

回答

0

我相信答案可能是:

class Order < ActiveRecord::Base 
    set_primary_key(:order_id) 
    belongs_to :invoice, :foreign_key => :order_id 
end 

class WorkOrder < ActiveRecord::Base 
    set_primary_key(:order_id) 
    belongs_to :invoice, :foreign_key => :order_id 
end 

class Invoice < ActiveRecord::Base 
    set_primary_key(:order_id) 
    has_one :work_order 
    has_one :order 
end 

雖然我真的不知道你的主鍵,也可以是一個外鍵(我是新來的Rails太)