Итак, вот быстрый вопрос. Я использую Rails с огромной старой базой данных, и у нее много сломанных внешних ключей, которые нужно обрабатывать как nils.Разбитые внешние ключи в Rails
Так что, когда я делаю: Foo.find (: все,: условия => {...},: включить =>: бар)
Rails с подключением всех бары с SELECT * FROM баров WHERE ID IN (...). Пока все хорошо, всего два запроса sql.
Теперь проблема в том, что для сломанных fks, когда я пытаюсь сделать foo.bar позже, Rails пытается восстановить панель с помощью SELECT * FROM bars WHERE id = broken_id. Затем он возвращает nil (правильно для меня), но все эти SELECT id = оказываются серьезной проблемой производительности, так как он бомбардирует mysql слишком большим количеством запросов sql.
Любой простой способ проверить, если foo.bar уже установлен, и если он не просто приводит к нулю?