Is there any general way of knowing which preposition to use?
Similar situations require different prepositions:

работаю в учреждении
работаю на телеграфе

учусь в десятом классе
учусь на первом курсе

был в театре
был на спектакле

был в тылу
был на фронте