#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, и для многих других баз данных.