Единственный случай, в котором я бы использовал наследование в этой ситуации, это если сами условия используют много общего кода, который может быть полностью реализован в суперклассе (без необходимости что-либо переопределять в подпунктах) , но практика использования наследования для интерфейсов в стиле Java не является обычной в Ruby.
В любом случае то, что вы делаете, известно как инверсия шаблонов управления и стратегии, читайте об этом для получения дополнительной информации. Ключом является (хорошее) решение заставить пользователя кода решить, каким будет окончательное поведение вашего кода, в отличие от параметра конфигурации или какого-либо другого рода ветвления в реализации.