2

作为一项学习练习,我正在尝试将现有的 Sinatra 应用程序转换为 Rails 应用程序。country.txt 中的信息最终会被移动到数据库中,但为了让事情对我来说简单,我想先从文本文件中读取数据,就像源应用程序一样。问题是我无法弄清楚 File 将从 Rails 应用程序中读取的位置。我在 Rails 目录中的哪个位置放置了 countries.txt 文档以便模型中的方法可以访问?

def get_random
  content = File.read("countries.txt")
  words = content.split("\n")
  words[rand(words.size)].upcase
end
4

1 回答 1

4

我对将 country.txt 放在哪里没有很好的建议,但是假设您将其放在“config”目录中。然后,无论正在读取什么文件,您都可以使用以下内容来读取它。

content = File.read(File.join(RAILS_ROOT, 'config', 'countries.txt'))

但是,如果您不希望它们在数据库中,那么没有那么多国家...我会考虑在其中创建一个文件,config/initializers/countries.rb其中包含以下内容:

COUNTRIES = ['Country 1', 'Country2', etc...]

或将名称映射到 iso 代码的哈希值。这样做的好处是你只读取一次文件,而不是每次你需要随机国家。

但是话虽如此..您还可以使用其中一种乡村宝石来为您处理它。

于 2013-01-05T22:35:45.427 回答