我有一个名为Company的模型以及许多关联,而这个关联还有很多。 (带有相关的销毁)
com = Company.find_by(name: 'ABC')
然后我将条目销毁
Company.find_by(name: 'ABC').destroy
现在'com
'有记录了,当我执行com.save
时,该对象不会与其关联一起存储。
注意 我正在尝试调试销毁查询在哪里花费的时间(它具有数百个关联),所以我不想丢失数据,我想在调试后将其保存在控制台中。
答案 0 :(得分:6)
最好的方法是将操作包装在数据库事务中。然后,您可以回滚事务以将所有数据恢复到其原始状态。
要明确地编写此代码,您可以执行以下操作:
ActiveRecord::Base.transaction do
Company.find_by(name: 'ABC').destroy
# Any debugging can be done here, or above
raise ActiveRecord::Rollback
end
实际上,rails实际上提供了debugging tool for precisely this use case:您可以通过运行以下命令对数据库进行任何更改并回滚所有内容(在事务内部,如上):
rails console --sandbox