Возможно, я неправильно понимаю вашу проблему, но если вы сможете вытащить этот код из базы данных и в файлы, которые можно протестировать и создать версии, вы окажетесь в гораздо более счастливом месте. Не зная тонкостей ваших моделей, сложно сказать, каким будет лучший подход, но я гарантирую, что он есть.
В прошлом я использовал наследование отдельных таблиц для моделирования сложных систем, имеющих связанные компоненты, которые имеют общие свойства и поведение. Возможно, вы сможете использовать этот подход с вашим приложением. STI в основном говорит, что у вас есть родительский класс, в вашем случае Configuration, и подклассы, которые находятся в одной таблице. Если есть общее поведение между некоторыми, но не всеми подклассами, вы можете переместить этот код в модули и включить в классы, которые в нем нуждаются.
Базовый родительский класс будет просто наследоваться от ActiveRecord:
class Configuration < ActiveRecord::Base
end
Тогда каждый подкласс будет иметь свою логику, определенную в нем:
class Component < Configuration
def getmax3(inputarray)
@maxpos = 0
inputarray.each do |h|
if @maxpos < h.position
@maxpos = h.position
end
end
1
end
end
Я не говорю, что это направление, в котором вы хотите идти, но, надеюсь, оно заставит вас задуматься о других способах моделирования вашей системы.