3 пользователей в системе одновременно нажмите купить билетArray.pop состояние гонки
модель
class TicketInventory < ActiveRecord::Base
serialize :ticket_roll, Array
end
ticket_roll засевают в диапазоне чисел
контроллер
ticket_inventory = TicketInventory.find(1)
ticket_roll = ticket_inventory.ticket_roll
TicketInventory.transaction do
@ticket = ticket_roll.pop
ticket_inventory.save
end
Все они получают один и тот же билет.
Я рассматривал lock_version, но это привело бы к ошибке вместо того, чтобы предоставить следующий билет.
Я также посмотрел Индексы, но для каждого билета потребовалась бы строка.
Как избежать этого состояния гонки?
Что такое 'TicketInventory', как оно определено. Пожалуйста, покажите весь код действия. – BroiSatse
@BroiSatse see edit please – softcode
Еще нужно больше кода. Что такое ticket_roll? – BroiSatse