Если мы отправляем два запроса параллельно, обновления db одного процесса не видны другому процессу. Фактически мы загружаем файлы с некоторыми данными, и есть уникальный чек (не на уровне модели или db, контролируемый некоторыми бизнес-правилами) по определенному атрибуту.Удаляет два процесса, неспособных видеть друг друга. Обновления db
Process 1:
foo1 = Foo.new(data from file)
foo1.number = 1 # from file
foo1.save
foo1.process # it will only get processed if there is no other Foo with same number i.e. 1
Process 2:
foo2 = Foo.new(data from file)
foo2.number = 1 # some other user has uploaded the file with same number
foo2.save
foo2.process # it will only get processed if there is no other Foo with same number i.e. 1
Как я могу справиться с этой ситуацией, так что я могу позволить один процесс полной и сделать Foo.number (DB запрос) доступен для другого процесса? Я не использую транзакцию базы данных.
Rails 3.2.9
, Apache
, Phusion_Passenger 4
Редактировать
Пожалуйста, обратите внимание, что foo1
и foo2
различные записи в базе данных, и то, что я хочу, чтобы иметь возможность process1 видеть foo2.number из Process2 и наоборот, так что Я могу сделать один из них дублированным.
спасибо @ethyl, обратите внимание, что 'foo1' и' foo2' - разные записи в базе данных, и я хочу, чтобы 'process1' смотрел' foo2.number' 'process2' и наоборот, чтобы я может сделать один из них дублированным. (отредактировал вопрос выше) – Saim