我有以下代码:
def store_or_update_agent(agent)
existing_agent = Agent.find_by_slug(agent['slug'])
if !existing_agent
logger.info('No record found, creating one')
logger.info(agent)
new_agent = Agent.new(agent)
new_agent.save
else
logger.info('Existing agent')
existing_agent.update(agent)
end
end
这用于处理我使用RubyXL导入的电子表格中的行。 RubyXL正在完成它的工作,记录器信息告诉我行正确导入。但问题是只有一行被保存到数据库中。它不是第一个,也不是最后一个,而是接近结束的地方。
在我的日志中查找保存之前的记录以及保存的记录时,我看到类似这样的内容:
这是针对未保存的记录:
No record found, creating one
{"first"=>"John", "last"=>"Doe", .....}
[1m[36m (0.0ms)[0m [1mBEGIN[0m
[1m[35m (0.0ms)[0m ROLLBACK
这是为了保存的记录:
No record found, creating one
{"first"=>"John", "last"=>"Doe", .....}
[1m[35m (0.0ms)[0m BEGIN
[1m[36mSQL (41.1ms)[0m [1mINSERT INTO `agents` (`first`, `last`) VALUES ('John','Doe')[0m
[1m[35m (21.0ms)[0m COMMIT
这里有什么想法,以及ROLLBACK的用途是什么?