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