Если вы хотите отключить перезагрузку классов в разработке, вы можете сделать это.В config / environment / development.rb просто сделайте:
config.cache_classes = true
вместо значения по умолчанию false.Это отключит перезагрузку класса режима разработки для всех классов, что довольно неудобно.Теоретически должен быть способ освободить только определенные классы от перезагрузки классов в режиме разработки, но он постоянно меняется от версии rails к версии rails, и часто не работает правильно, и я не отслеживал, как это сделатьэто в текущих рельсах или если это работает.Я не чувствую себя комфортно с вашей хакерской попыткой реализовать эту функцию самостоятельно с помощью патча обезьяны - тот факт, что Rails пытался поддерживать эту официально различными способами в прошлом, но не удалось, означает, что это сложно сделать правильно, и вы, вероятно, ещет.
ОДНАКО.Я не думаю, что это действительно то, что вы ищете.Я думаю, что в вашем общем дизайне есть что-то странное, и отключение перезагрузки класса - это просто обходной путь.Но я не уверен, что именно ты пытаешься сделать или что происходит.ActiveRecord поддерживает иерархию класса модели «наследование одной таблицы», но кажется, что вместо этого вы пытаетесь выполнить «наследование нескольких таблиц».
Я не уверен , если AR поддерживаетнаследование нескольких таблиц или нет - я буду искать документацию по этому вопросу, и если AR поддерживает это, делайте так, как вам говорят - и если AR не поддерживает его, откажитесь от дизайна, если вы действительно не хотитепроникнуть во внутренности AR и выяснить, как заставить AR сделать это, или написать расширение для AR, чтобы сделать это.Тот факт, что это почти работает, может заставить меня догадаться, что AR поддерживает наследование нескольких таблиц, но вам не хватает какой-то конфигурации, чтобы сказать это.
Существует также функция "полиморфной ассоциации" Rails, которая может быть полезной для вас.
В основном, извините, не уверен, что AR может делать то, что вы хотите, но на вашем месте я бы попробовал, только если смогу найти доказательства того, что AR действительно поддерживает это - даже если вы заставляете его работатьотключив перезагрузку класса dev-mode, возможно, вас ждут другие странные ошибки, если вы пытаетесь сделать что-то, что AR не поддерживает.AR сложный код.