有沒有方法可以爲列指定不同的表?使用Rails將表的列映射到不同的類
例如,如果有一類「A」和另一個「B」類:
A類有一個名爲col
列,它實際上是一個外鍵B類B類沒有任何A的外鍵。
如何定義A類,使表A的col
實際映射到表/ B類的ID?
有沒有方法可以爲列指定不同的表?使用Rails將表的列映射到不同的類
例如,如果有一類「A」和另一個「B」類:
A類有一個名爲col
列,它實際上是一個外鍵B類B類沒有任何A的外鍵。
如何定義A類,使表A的col
實際映射到表/ B類的ID?
Rails的belongs_to有foreign_key
選項:
class A < ActiveRecord::Base
belongs_to :b, :foreign_key => :col
end
我想指出的是,雖然這回答了OP的問題,但這不是「鐵軌方式」,而這樣做是在與框架作鬥爭。除非OP不能修改表,否則他應該重構讓ActiveRecord管理外鍵。 – Donovan 2014-10-20 19:27:24
如果您要創建一個新的表,你可以通過遷移也做到這一點。
此行添加到您的遷移:
t.references :A, index: true
默認情況下,這將創建表A B_id
你是什麼意思'maps'表B的ID? – Nimir 2014-10-20 18:57:40
我的意思是表B有一個稱爲ID的列,並且A的列col實際上是B的外鍵,因此它基本上引用B的列ID。理想情況下,而不是col,它的名稱應該是B_ID。但我無法更改表格模式,因此需要以某種方式將col映射到B的ID。 – 2014-10-20 19:01:06