我有以下内容。
files.each do |file_path|
filename = file_path_to_file_name(file_path)
feature = Feature.new
feature.name = filename_to_name(filename)
feature.filename = filename
feature.suite_id = suite.id
feature.save!
end
我想确保每个功能都得到保存,但如果抛出异常,我不想停止。我不想只是默默地失败并继续前进,这就是我将!
与save
一起使用的原因。
首先:这是我应该使用交易的情况(如下所示)?:
found_tests.each do |file_path|
Feature.transaction do
filename = file_path_to_file_name(file_path)
feature = Feature.new
feature.name = filename_to_name(filename)
feature.filename = filename
feature.suite_id = suite.id
feature.save!
end
end
其次,有什么方法可以确保一切都得到保存?每当这个特定的脚本运行时,我经常处理少于10,000件保存的订单时会有什么风险。
答案 0 :(得分:0)
save
还是save!
,数据都不会保留。当您进行多次更新时,通常会使用.transaction
,并说最后一次更新失败,因此您还必须回滚以前的更新。你的情况不是这样的。如果您想继续运行脚本,则需要解除异常并致电next
以转到下一个file_path
found_tests.each do |file_path|
begin
filename = file_path_to_file_name(file_path)
feature = Feature.new
feature.name = filename_to_name(filename)
feature.filename = filename
feature.suite_id = suite.id
feature.save!
rescue YourError => e
puts e
next
end
end