在Rails中存储常量数据

时间:2015-03-14 07:13:20

标签: ruby-on-rails web-applications model

在rails应用中存储国家名称,货币,城市列表等一组常量的最佳方法是什么?

我在想一个名为Constants的模型存储所有这些数据,另一个模型ConstantMaps是多态的,它将常量映射到其他各种模型

这是一种正确的方法吗?

2 个答案:

答案 0 :(得分:1)

拥有更多具有语义名称的模型会更好,每个模型都有反映模型应该了解自身的方法。您的模型应该分组相关数据。例如,您可以使用Location#country返回国家/地区名称和Location#city返回城市名称等位置模型。货币将是它自己的模型,因为当您考虑到您必须告诉位置有关其位置的事实时,位置#货币没有意义。

拥有一个名为Constants的模型和另一个唯一目的是映射的模型是一个非常糟糕的主意,因为它没有告诉你模型中的内容,更糟糕的是它会包含不相关的数据。将来跟踪错误和扩展功能将更加困难。

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

答案 1 :(得分:0)

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