我的申请越来越多,我担心的是,当您购买订单时,我们会将其委托给某个人。然而,随着我们现在进行扩展,我想找到一个解决方案,如果两个不同的客户同时购买,则可以同时委派一个人两个订单。
目前我们的订单通过连接的状态机(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;)。