2013-01-05 47 views
2

作爲一種學習練習,我試圖將現有的Sinatra應用程序轉換爲Rails應用程序。 countries.txt中的信息最終會被轉移到數據庫中,但爲了讓事情變得簡單,我想先從文本文件中讀取數據,就像源應用程序一樣。問題是我無法弄清楚文件將從Rails應用程序中讀取的位置。在Rails目錄中,我可以將模型中的方法的countries.txt文檔放在哪裏以便訪問?模型可以訪問Rails中的文本文件?

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

回答

4

我沒有在哪裏放countries.txt一個很好的建議,但讓我們說,你把它放在「配置」目錄。無論文件在做什麼讀取,您都可以使用以下內容來閱讀它。

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

但是,如果你不希望他們在數據庫中,有沒有那麼多的國家......我會考慮在說config/initializers/countries.rb創建一個文件,它有這樣的事情:

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

或者將名稱映射到iso代碼。這樣做的好處是你只需要閱讀一次文件,而不是每次你需要一個隨機的國家。

但是儘管如此..你也可以使用其中一個國家的寶石來處理它。

+0

感謝您的建議。我會和他們一起玩。我最初認爲「模型」,因爲該方法是在Sinatra應用程序中的一個類。 – BrainLikeADullPencil