将json转换为hash以插入Active Record

时间:2016-10-14 08:21:45

标签: ruby-on-rails json ruby activerecord

我还在练习处理数组和哈希,特别是在2d或3d结构中获取细节。我试图在json文件中使用细节来处理一些准备插入带有Active Record的数据库的数据。

这是我的json结构,用于' my_file.json'

# my_file.json    

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

这是我用来将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

(顺便说一句,用户确实存在于数据库中)

我无法解决我出错的地方,但我知道这是一件我能忽视的简单事情。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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 }