作者:霸道Q丫头 | 来源:互联网 | 2022-12-07 01:06
我有一个名为Company的模型以及许多协会,它是一个拥有更多的协会.(具有依赖性破坏)
com = Company.find_by(name: 'ABC')
然后我通过破坏入口
Company.find_by(name: 'ABC').destroy
现在' com
'有记录,当我执行com.save
该对象时,它不会与其关联一起存储.
注意
我正在尝试调试我的销毁查询占用时间(它有数百个关联),所以我不想丢失数据,我想在调试后将其保存在控制台中.
1> Tom Lord..:
最好的方法是以某种方式将操作包装在数据库事务中.然后,您可以回滚事务以将所有数据还原到其原始状态.
要明确地写这个,你可以这样做:
ActiveRecord::Base.transaction do
Company.find_by(name: 'ABC').destroy
# Any debugging can be done here, or above
raise ActiveRecord::Rollback
end
实际上,rails实际上为这个用例提供了一个调试工具:您可以通过运行以下命令对数据库进行任何更改并将所有内容回滚(在事务内部,如上所述):
rails console --sandbox