我正在开发一个专门用于多个国家/地区的应用程序。但是,由于每个国家在簿记和金融领域都有自己的特点,因此需要编写类似任务的单独类别。这些类可能会共享一个公共接口,这一事实会使问题变得更加简单。
将所有内容打包成一个大类是不可行也不可维护的,因此需要类似语言环境的组织,即需要根据用户的语言环境或国家/地区设置加载类。
这种情况可以实施哪些最佳做法? 是否存在可以利用的任何Rails功能?
谢谢!
编辑:我不需要在这些特定国家/地区的类中访问数据库。他们将调用外部Web服务(每个国家/地区不同),主应用程序代码将响应存储到公共数据库字段中。
答案 0 :(得分:2)
听起来您可能想要使用单表继承或STI(适用于您的模型)。这绝对会让你走上正确的轨道。
例如,您可以拥有通用Finance
模型,然后拥有Finance::France
,Finance::UnitedKingdom
等。这两个命名空间模型都将继承自Finance
。然后,您需要在数据库中添加type
(字符串)列。您可以在
http://api.rubyonrails.org/classes/ActiveRecord/Base.html#label-Single+table+inheritance
答案 1 :(得分:0)
最后,我决定使用简单的const查找方法:
some_class = const_get("ClassModule::#{language_code}::SomeClass")
if some_class.present?
...
似乎可以解决这个问题。 :)