рабочая среда rails для одновременного чтения / записи данных в кэш - PullRequest
0 голосов
/ 11 июля 2011

У меня есть приложение rails3, использую apache / passenger в производственной среде. У меня есть модель CarbingBill, у нее есть атрибут bill_no, bill_no автоматически генерируется перед созданием, я использую кеш Rails (FileStore) для кэширования текущего bill_no, когда создаю новую модель CarbingBill, используйте Rails.cache.read ('bill_no') чтобы получить текущее значение bill_no, затем установить экземпляр CarbingBill bill_no, вызвать Rails.cache.write ('bill_no', current_bill_no + 1) и т. д. Но когда многопользовательское одновременное создание модели CarbingBill, сгенерированное bill_no дублируется, как решить эту проблему?

1 Ответ

0 голосов
/ 11 июля 2011

Один умный способ - создать модель BillNo и соответствующую таблицу с помощью только атрибута id. Каждый раз, когда вы создаете CarillingBill, создаете новую запись BillNo и присваиваете ее идентификатор CariringBill. Таким образом, вы используете автоматически генерируемый идентификатор вашей базы данных для этой модели в качестве вашего уникального создателя идентификаторов.

class CarryingBill
   before_create :make_bill_no
   def make_bill_no
       bill = BillNo.create
       self.bill_no = bill.id
   end
 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...