私はスクリプト/コンソールで信じられないほど恐ろしい間違いを犯しました:
user.delete
同じスクリプト/コンソール セッション内から元に戻す方法はありますか?
私はスクリプト/コンソールで信じられないほど恐ろしい間違いを犯しました:
user.delete
同じスクリプト/コンソール セッション内から元に戻す方法はありますか?
削除されたレコードに引き続きアクセスできる場合は、次のように新しいレプリカを作成できます
User.new(user.attributes_hash).save
これにより、まったく同じ属性(はい、IDも)を持つユーザーが作成され、DBに保存されます。これを使用して、フラッシュを使用した破壊アクションを元に戻します。
警告。メソッドを使用し、モデルがまたはUser#destroy
とリレーションを持っている場合、それらの依存レコード (コマンドの実行時に存在する場合) は失われます。もちろん、削除/破棄されたレコードへのアクティブな参照、つまり変数がある場合を除きます。dependent: :destroy
dependent: :delete
方法もわかりません。シェル履歴にまだ情報が残っている可能性があります。(実行するまで上にスクロールするだけですuser.delete
)。ユーザーインスタンスを手動で復元できますが、依存関係/関連付けがある場合は注意が必要です。
将来的には、次の方法でサンドボックス モードでコンソールを起動することをお勧めします。
rails console -s
閉じると、すべての変更がロールバックされます。
編集: Arne L.'s Answerを見てください。オブジェクトがまだ利用可能な場合に、ユーザーをデータベースに保存する方法が示されています。これは、私が提案したもの (「ユーザーを手動で復元する」) よりもはるかに優れています。
残念だけど違う。変更の履歴を保持している Papertrail のような宝石を使用していない限り、記録はなくなります。