Не понимаю, что вы делаете, но проблема
Проблема в том что в массив добавляется только 1 последнее значение
при вызове метода
@history = @student.add_payment
кроется здесь:
self.payment = []
То есть, вы сначала создаете новый массив, а потом добавляете туда что-то. Естественно, это что-то будет там в гордом одиночестве.