Подтвердить что ты не робот

Есть все равно, чтобы отменить удаление activerecord в консоли rails?

Я сделал невероятно ужасную ошибку в script/console:

user.delete

Есть ли способ отменить это из того же сеанса script/console?

4b9b3361

Ответ 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, который хранит историю ваших изменений, запись исчезла.