我不确定我缺少什么,但下面的代码不会保存到我的数据库中。我正在使用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
答案 0 :(得分:0)
正如Gokul M指出的那样,firstName
和lastName
需要使用蛇形来匹配您的架构。但是,您的代码仍然无效,因为: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
尽管如此,我还没有测试过这段代码。