Вы можете использовать замыкание вместо Rule-объекта, при условии, что подобная кастомная валидация нужна только в одном месте вашего приложения.
Замыкание получает имя атрибута, его значение и fail-коллбэк, который вызовется, если валидация не пройдет.