Блокировка выбора в Rails с MySQL

В поисках совета:

Предположим, у меня есть объект Account с атрибутом limit. Каждый день может быть n платежей, с суммой их сумм вплоть до лимита счета. При создании нового платежа он проверяет, находятся ли его сумма + суммы других платежей за день в пределах лимита учетной записи, и либо сохраняет запись, либо отображает ошибку.

Теперь давайте предположим, что у меня есть учетная запись с лимитом 100 $, и одновременно создаются два платежа по 99 $. Каждый будет делать выбор, видеть, что там ничего нет, и приступать к самосохранению, в результате чего будет сохранено всего 198 $.

Что бы вы сделали по этому поводу? Я думал о том, чтобы установить блокировку записи в таблице платежей в начале транзакции, но это выглядит довольно жестко, поскольку я действительно беспокоюсь о том, чтобы не допустить, чтобы платежи, принадлежащие определенному аккаунту, не читались другими транзакциями. Есть ли другие варианты, лучшие способы справиться с этой ситуацией?

5
задан Toms Mikoss 17 August 2010 в 12:36
поделиться