2016-10-14 20 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 }