2016-10-14 55 views
-1

我仍在練習處理數組和散列,特別是在2D或3D結構中進行細節處理。我試圖使用json文件中的細節來處理一些準備插入帶有Active Record的數據庫的數據。將json轉換爲哈希以插入Active Record

這裏是我的「my_file.json」

# my_file.json  

[ 
    { 
    "name": "Joe Bloggs", 
    "telephone": "012-345-6789" 
    }, 
    { 
    "name": "Hilda Bloggs", 
    "telephone": "012-345-6789" 
    } 
] 

這裏JSON結構,我使用JSON數據到的東西我可以將轉換成我的數據庫代碼

def json_insert_to_db 
     require 'json' 
     file = File.read('my_file.json') 
     json_data = JSON.parse(file) 
     details = json_data.map do |x| 
     user = User.new 
     user.name = json_data[x]['name'] 
     user.telephone = json_data[x]['telephone'] 
     end 
    end 

有了這個,我得到

NameError: uninitialized constant User 

(用戶不存在於數據庫中,順便)

我無法弄清楚我要出錯的地方,但我知道這很簡單,我忽略了。謝謝你的幫助。

+2

這個問題有沒有關係'json'。您的代碼中是否聲明瞭User模型,或者您希望Rails爲您編寫代碼? – mudasobwa

+0

「轉換json數據」代碼片段位於何處?你如何運行它?這聽起來像你可能在沒有初始化rails環境的情況下運行。如果這是一個rake任務,那麼你需要設置rails環境。 – SteveTurczyn

+0

目前我正在控制檯中運行它。但我想我可能對我的數據庫有問題... :( – matski

回答

0

用戶模型已設置,但我的數據庫有一個遷移問題。然而,除此之外,當時我仍然無法建立我在導入json文件時需要的東西。

我現在已經制定了如何做到這一點。爲了清晰起見,遷移問題已得到解決,並且我還首先修改了我的json文件的結構。

# my_file.json  

{ 
    "new_users": 
    [{ 
    "name": "Joe Bloggs", 
    "telephone": "012-345-6789", 
    }, 
    { 
    "name": "Hilda Bloggs", 
    "telephone": "012-345-6789", 
    }] 
} 

我的腳本...

require 'json' 
    file = File.read('my_file.json') 
    json_data = JSON.parse(file)['new_users'] 
    @new_users = json_data.each do |key,value| 
    @new_user = User.new 
    @new_user.name = key['name'] 
    @new_user.telephone = key['telephone'] 
    end 

    @new_users.each { |x| puts x }