我应该在哪里存储Ruby on Rails中的状态或城市等静态列表?

时间:2012-09-28 05:30:26

标签: ruby-on-rails

如果可能,我想阻止进入数据库。这是一个很少更改的城市和州列表,将在项目开始时填充,并由应用程序用于格式化和查找验证这些位置。

到目前为止我的研究:

  • config / initializers

  • yml文件

  • 数据库但是缓存它(我不想 点击数据库)

有点困惑,所以想要性能和惯例的最佳方法。

1 个答案:

答案 0 :(得分:2)

我建议采用以下两种方式之一:

  • 手动创建一个ruby对象,其中包含数据并可以回答相关问题:

    class Cities
      def self.data
        {
          1: 'New York',
          2: 'Boston'
        }
      end
    
      def self.find_name_by_id(id)
        data[id]
      end
    end
    

    这意味着手动多做一些,并且没有ActiveRecord通常给你的所有“免费”。或...

  • 如果您确定需要ActiveRecord的所有功能,您还可以使用gem:https://github.com/zilkey/active_hash。它可以执行您想要的操作,并可以将数据存储在散列或yaml文件中的对象中。它将执行关联并提供从ActiveRecord中使用的对象方法。