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.直接將輸出變成日誌文件,而不是收集變量裏面的數據,然後打印它 –