我有,我想放到一个单一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"
类型的记录。
有什么办法可以避免这种情况?我会频繁地移动模型,直到它们被成熟地组织起来,并且每次移动文件以使开发人员的生活变得更简单时,都不会需要进行数据库更新/迁移。