我有,我想放到一個單一lookups
表,而不必單獨20+表,每一個具有相同屬性的幾個項目:軌道4:單表繼承和不使用類名作爲「類型」
- 國家
- 狀態
- email_types
- phone_types
- address_types
- 等...
在Rails中,我只是將type
列添加到lookups
表中,它「神奇地」起作用。
不過,我已經命名空間爲一些開發商的易於使用的車型,因爲它變得有點混亂:
# app/models/lookup.rb
class Lookup < ActiveRecord::Base
end
# app/models/lookups/country.rb
class Lookups::Country < Lookup
end
所以,當我Lookups::Country.create(name: "Italy")
,它存儲"Lookups::Country"
的type
。
但所有優秀的開發人員,我最終會做一些重構,和而不是扔進一個app/models/lookups
命名空間中的所有查詢,我要打破他們到他們的各種元素:
# app/models/addresses/country.rb
class Addressess::Country < Lookup
end
的改變命名空間的唯一原因是隨着它越來越大,重新組織項目。
因此,當我Addressess::Country.create(name: "Italy")
現在,它存儲type
"Addressess:Country"
。現在問題是在lookups
表中有2個「類型」的國家。
基本上,我只是「丟失」了我的數據,因爲我將模型移動到了不同的命名空間。我將不得不去更新所有"Lookups::Country"
記錄以獲得"Addressess::Country"
類型的記錄。
有什麼辦法可以避免這種情況?我會頻繁地移動模型,直到它們被成熟地組織起來,並且每次移動文件以使開發人員的生活變得更簡單時,都不會需要進行數據庫更新/遷移。