Да, это плохая практика.Нечто вроде
TestFieldDefinition.find_all_by_company_id(...)
является бизнес-логикой;он принадлежит контроллеру, а не представлению.То же самое относится к большей части этой пасты;такая большая условная логика без визуализации контента является бизнес-логикой и должна быть перемещена в контроллер.