Как исправить недопустимые ссылки после delete_all

#mysql #ruby-on-rails

#mysql #ruby-on-rails

Вопрос:

У меня есть следующие отношения:

 class Blog
  belongs_to :owner
end

class Owner
  has_one :blog, dependent: :destroy
end
  

и по ошибке вместо использования destroy_all я использовал delete_all . Теперь у меня есть куча недопустимых ссылок в базе данных. Как это можно исправить?

Комментарии:

1. итак, вы просто ищете блог, у которого сейчас нет идентификатора владельца? Или идентификатор владельца, который не существует?

2. Вы должны добавить ограничения внешнего ключа внутри вашей базы данных, чтобы подобные вещи не повторялись.

Ответ №1:

Запустите следующий запрос из rails dbconsole :

 delete from blogs where owner_id not in (select id from owners);
  

Комментарии:

1. это mysql??

2. ДА. Должно работать и для postgte, и для многих других баз данных.