Есть все равно, чтобы отменить удаление activerecord в консоли rails?
Я сделал невероятно ужасную ошибку в script/console:
user.delete
Есть ли способ отменить это из того же сеанса script/console?
Ответ 1
Ну, если вы остаетесь иметь доступ к удаленной записи, вы можете просто создать новую реплику, подобную этой
User.new(user.attributes_hash).save
Это просто создаст пользователя с атрибутами exaxt (да, также id) и сохранит его в БД. Я использую это, чтобы отменить действие уничтожения с помощью вспышки.
Предостережение. Если вы использовали метод User#destroy, и ваша модель имеет отношения с dependent: :destroy или dependent: :delete, тогда эти зависимые записи - если они присутствуют при выполнении команды - будут потеряны, Если, конечно, у вас нет активных ссылок, т.е. Переменных, в удаленные/уничтоженные записи.
Ответ 2
Я тоже не знаю об этом, возможно, у вас все еще есть информация в истории вашей оболочки. (Просто прокрутите список до тех пор, пока вы не выполнили user.delete). Вы можете вручную восстановить экземпляр пользователя, который становится сложным, если у вас есть зависимости/ассоциации.
В будущем: вы можете запустить консоль в режиме песочницы с помощью:
rails console -s
Все изменения будут отменены после закрытия.
Изменить: см. Arne L. Answer показывает способ сохранения пользователя в базе данных, если объект до сих пор доступен. Это намного лучше, чем я предложил ( "вручную восстановить пользователя" ).
Ответ 3
К сожалению, нет. Если вы не используете драгоценный камень, такой как Papertrail, который хранит историю ваших изменений, запись исчезла.