2014-10-20 66 views
1

有沒有方法可以爲列指定不同的表?使用Rails將表的列映射到不同的類

例如,如果有一類「A」和另一個「B」類:

A類有一個名爲col列,它實際上是一個外鍵B類B類沒有任何A的外鍵。

如何定義A類,使表A的col實際映射到表/ B類的ID?

+0

你是什麼意思'maps'表B的ID? – Nimir 2014-10-20 18:57:40

+0

我的意思是表B有一個稱爲ID的列,並且A的列col實際上是B的外鍵,因此它基本上引用B的列ID。理想情況下,而不是col,它的名稱應該是B_ID。但我無法更改表格模式,因此需要以某種方式將col映射到B的ID。 – 2014-10-20 19:01:06

回答

5

Rails的belongs_toforeign_key選項:

class A < ActiveRecord::Base 
    belongs_to :b, :foreign_key => :col 
end 
+0

我想指出的是,雖然這回答了OP的問題,但這不是「鐵軌方式」,而這樣做是在與框架作鬥爭。除非OP不能修改表,否則他應該重構讓ActiveRecord管理外鍵。 – Donovan 2014-10-20 19:27:24

0

如果您要創建一個新的表,你可以通過遷移也做到這一點。

此行添加到您的遷移:

t.references :A, index: true 

默認情況下,這將創建表A B_id

相關問題