在 Rails 中存储常量数据

Storing Constant Data in Rails

在 rails 应用程序中存储一组常量(如国家/地区名称、货币、城市列表)的最佳方法是什么?

我正在考虑使用一个名为 Constants 的模型来存储所有这些数据,以及另一个名为 ConstantMaps 的多态模型,它将常量映射到其他各种模型

这是正确的方法吗?

如果此列表需要频繁 addition/change,请考虑将它们存储在您的数据库中。否则,它是您代码的一部分,每次更改都需要新的部署。

最好有更多具有语义名称的模型,每个模型都有反映模型应该了解自身的方法。您的模型应该对相关数据进行分组。例如,您可以有一个 Location 模型,其中包含 return 国家名称的 Location#country 和 return 城市名称的 Location#city 等方法。货币将是它自己的模型,因为当您考虑必须将其位置告诉 Location 这一事实时,Location#currency 没有意义。

拥有一个名为 Constants 的单一模型和另一个唯一目的是映射的模型是一个非常糟糕的主意,因为它不会告诉您模型中有什么,更糟糕的是它会包含不相关的数据。以后追查错误和扩展功能会更加困难。

数据应存储在数据库中,其中包含与模型名称相对应的表。该模型的方法查询数据库和 return 预期数据。如果出于某种原因您不能或不想将常量数据存储在数据库中,则每个相应的模型 class 都可以将哈希存储在 CONSTANT 变量中(例如 CITY_LIST = {australia: ["sydney", "melbourne", "brisbane",...], brazil: ["san paulo", "rio de janeiro",...]} 和方法查询该变量而不是数据库。