如何在Rails项目中组织特定于国家/地区的类?

时间:2014-01-29 12:48:22

标签: ruby-on-rails internationalization

我正在开发一个专门用于多个国家/地区的应用程序。但是,由于每个国家在簿记和金融领域都有自己的特点,因此需要编写类似任务的单独类别。这些类可能会共享一个公共接口,这一事实会使问题变得更加简单。

将所有内容打包成一个大类是不可行也不可维护的,因此需要类似语言环境的组织,即需要根据用户的语言环境或国家/地区设置加载类。

这种情况可以实施哪些最佳做法? 是否存在可以利用的任何Rails功能?

谢谢!

编辑:我不需要在这些特定国家/地区的类中访问数据库。他们将调用外部Web服务(每个国家/地区不同),主应用程序代码将响应存储到公共数据库字段中。

2 个答案:

答案 0 :(得分:2)

听起来您可能想要使用单表继承或STI(适用于您的模型)。这绝对会让你走上正确的轨道。

例如,您可以拥有通用Finance模型,然后拥有Finance::FranceFinance::UnitedKingdom等。这两个命名空间模型都将继承自Finance。然后,您需要在数据库中添加type(字符串)列。您可以在

了解更多有关STI的信息

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?
    ...

似乎可以解决这个问题。 :)