避免同时复制

时间:2016-06-18 13:26:11

标签: ruby-on-rails

我的申请越来越多,我担心的是,当您购买订单时,我们会将其委托给某个人。然而,随着我们现在进行扩展,我想找到一个解决方案,如果两个不同的客户同时购买,则可以同时委派一个人两个订单。

目前我们的订单通过连接的状态机(AASM):

event :connect, after: :find_person do
  transitions from: :pending, to: :connecting
end

并且find_person看起来像这样:

  def find_person
    person = Person.where(aasm_state: 'available').order('RANDOM()').first
    if person
      person.requested!
      create_order_request(person: person)
    else
      person_unavailable!
    end
 end

现在如果两个条目同时进入他们不会被委派给这个人,我怎么能避免这种情况。如果找到了某个人,我会将其状态移至要求的状态。这意味着他们无法接收新订单(因为我只查找可用的人员#39;)。

0 个答案:

没有答案