0
我有一个需要详细记录的事务,即使它失败了。我怎样才能做到这一点?如果交易失败,保留数据?
这是我的代码:
# csv gets loaded etc.
import = CsvImport.new
import.logger += 'Starting import'
ActiveRecord::Base.transaction do
import.logger += 'CSV loaded, starting import'
csv_array.each_with_index do |row, index|
begin
unless importer.has_key?(row[0])
import.logger += 'Key not found'
raise StandardError
end
result = CsvImporter.import_line(row[0])
import.logger += 'Imported line #{index} successfully' if result
rescue
import.logger += 'Transaction aborted!'
end
end
import.logger += 'Transaction successful!'
end
在一个失败的事务,记录器不仅具有“启动导入”没有任何交易里面添加字符串 - 明显。我如何保存这些数据?
'CsvImport.transaction'和'import.transaction'不起作用,或者没有将数据保留在import.logger属性中。我该如何使用它?这些文档没有告诉我任何新东西,因为我按照它的记录方式使用它。 – Cojones
其他人知道如何保持交易的日志输出(或一般数据)? – Cojones
@Cojones好的,现在我明白了。在您的代码中,您将记录器输出分配给事务内定义的记录器。当这一切都失败时,一切都会得到恢复,输出中也没有任何东西。我认为你可以尝试: 1.在交易之外定义一个记录器或者 2.直接将输出变成日志文件,而不是收集变量里面的数据,然后打印它 –