В данном случае я бы рекомендовал не использовать исключения для управления. Более того, для Вашей задачи больше подойдет параметр 
:restrict_with_error
В исходниках рельсы: 
when :restrict_with_error
          unless empty?
            record = klass.human_attribute_name(reflection.name).downcase
            owner.errors.add(:base, :"restrict_dependent_destroy.many", record: record)
            false
          end
        else
В этом случае вы как обычно делаете 
if @user.destroy
  ...
else 
....
end
Есть еще вариант использовать 
before_destroy директиву, и либо делать там явную проверку, либо бросать исключение в явном виде. Главное в негативном сценарии не забыть вернуть false.