无论如何,在轨道控制台中删除ActivereCord吗? 我在脚本/控制台上犯了一个令人难以置信的可怕错误: user.delete 有什么方法可以从同一脚本/控制台会话中撤消?

问题描述 投票:0回答:2
有什么方法可以从同一脚本/控制台会话中撤消该方法?

Well,如果您仍然可以访问已删除的记录,则可以创建一个新的副本

User.new(user.attributes_hash).save

只需使用
ruby-on-rails rails-activerecord
2个回答
26
投票
属性创建一个用户(是的,也是ID),然后将其保存到DB。我用它来消除使用闪光灯的销毁动作。

caveat.
如果您使用了
User#destroy

方法,并且模型与dependent: :destroy

dependent: :delete

有关系,那么这些因记录(如果执行命令时存在)将丢失。当然,除非您对已删除/破坏记录有主动参考,即变量。

我也不知道一种方式,您可能仍然拥有外壳历史记录中的信息。 (只需向上滚动直到执行
user.delete
)。您可以手动恢复用户实例,如果您有依赖关系/关联,这会很棘手。

将来:您可能需要在沙盒模式下启动控制台:
rails console -s


20
投票

Edit:请查看

ArneL.的答案

它显示了一种将用户保存到数据库的方法,如果对象仍然可用。那比我建议的要好得多(“手动恢复用户”)。

不幸的是,不。除非您使用的是像纸质描绘的宝石一样,却保留了您的变化历史,否则记录已经消失了。

如果您仍处于同一控制台会话中,这是您运行的最后一个命令,则可以使用以下操作:

Model.destroy_all # if you haven't performed any other action after accidently deleting all records from Model, # then _ would grab last response generated by Model.destroy_all destroyed_records = _ destroyed_records.each do |destroyed_record| Model.create(destroyed_record.attributes) end 发现来自这里:https://gist.github.com/8parth/cb2a5555555c4f6a89b89b22aff6633e50a6c4 #file-revert_destroy_all-rb-l1

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.