我有兩個類:Topic
和Buy::Topic
。後者是前者的一個子類,通過一個外鍵(Buy::Topic.topic_id == Topic.id
)。所以基本上這是使用類表繼承模式。在類表繼承中,如何讓父和子使用相同的ID?
Buy::Topic
有它自己的id
和指向父Topic
對象的外鍵topic_id
。
不過我想確保的Buy::Topic
的ID是一樣的topic_id
從父是這樣的:
#<Topic id: 22598>
與 #<Buy::Topic id: 22598, topic_id:22598
這是可能的Rails的?這對搜索引擎優化的目的更好,並且可以更輕鬆地處理康康的load_and_authorize_resource
(有時可以使用兩個錯誤的ID來查找內容)。
UDPATE:
該模式已設置並在相當長的時間內完成,因此它不太可能,現在將其更改爲STI。
感覺就像如果你想讓id匹配,STI會是更好的選擇。你總是可以將Buy :: Topic定義爲Topic的一個特例... – 2012-03-06 04:27:48
是的,我想過了,原因是子類有太多的其他領域。 – lulalala 2012-03-06 04:30:27
...那很糟糕,因爲?引用Knuth的話,「過早優化是萬惡之源」。存儲空間是可笑的便宜。如果您的核心要求是「讓id與搜索引擎優化相同」,那麼優化,而不是存儲。 – 2012-03-06 04:59:42