尝试将JSON数据保存到数据库

时间:2017-11-13 03:35:57

标签: ruby-on-rails json ruby-on-rails-5

我不确定我缺少什么,但下面的代码不会保存到我的数据库中。我正在使用rails 5.1.4和ruby 2.4.1。我没有控制器或视图,如果有任何帮助,可以使用Mysql。

模型

class Agent < ApplicationRecord

  json = JSON.parse('{"Agents":[{"firstName":"John","lastName":"Smith","id":"57fa5f47-8851-11e7-b391-02cbcf8dd991"},{"firstName":"Alice","lastName":"Thompson","id":"77eccb07-101d-11e7-83be-02e5025d7d75"}]}')

  json['Agents'].each do |data|
    Agent.create(
    id: data['id'],
    first_name: data['firstName'],
    last_name: data['lastName']
  )
  end

end

模式

create_table "agents", id: :string, limit: 36, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8" do |t|
    t.string "first_name"
    t.string "last_name"
  end

1 个答案:

答案 0 :(得分:0)

正如Gokul M指出的那样,firstNamelastName需要使用蛇形来匹配您的架构。但是,您的代码仍然无效,因为:id是ActiveRecord模型中的受保护属性。这意味着它不能被分配。但是你可以正常分配它。即model.id=foo

所以你可以试试像

这样的东西
json['Agents'].each do |data|
  agent = Agent.new
  agent.id = data['id']
  agent.first_name = data['firstName']
  agent.last_name = data['lastName']
  agent.save
end

尽管如此,我还没有测试过这段代码。