2

学習課題として、既存の Sinatra アプリを Rails アプリに変換しようとしています。countries.txt の情報は最終的にデータベースに移動されますが、簡単にするために、ソース アプリと同じ方法で、まずテキスト ファイルからデータを読み取りたいと思います。問題は、Rails アプリで File がどこから読み取られるのかがわからないことです。モデル内のメソッドがアクセスできるように、countries.txt ドキュメントを Rails ディレクトリのどこに配置すればよいですか?

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

1 に答える 1

4

どこにcountries.txtを配置するかについては良い提案はありませんが、「config」ディレクトリに配置するとします。次に、どのファイルが読み取りを行っているかに関係なく、以下を使用して読み取ることができます。

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

ただし、データベースにそれらを含めたくない場合は、それほど多くの国はありません...次のconfig/initializers/countries.rbようなファイルを作成することを検討します。

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

または、名前をISOコードにマッピングするハッシュ。これの利点は、ランダムな国を取得する必要があるたびにではなく、ファイルを1回だけ読み取ることです。

しかし、そうは言っても、そこにある国の宝石の1つを使用してそれに対処することもできます。

于 2013-01-05T22:35:45.427 に答える