我在rails API中面临互斥的问题。 我的数据库中有一些Event对象,其中包含将参加活动的人数。
考虑我的事件方法,将人员添加到事件中:
class Event
def add_person
nb = self.number_of_person + 1
# Some stuff
self.number_of_person = nb
self.save
end
end
现在,假设客户A和B想要参加活动E. Rails将收到2个请求,并将并行调用add_person方法。 最后,事件E中的人数可能不会增加2而是增加1.
这是我希望能够做到的:
Client A | Client B | Possible in parallel
--------------------------------------------------------------------------
Event.find(1).show | Event.find(1).show | yes
Event.find(1).add_person | Event.find(1).add_person | no
Event.find(1).add_person | Event.find(2).add_person | yes
我只想在同一个对象上排队add_person
方法。
有办法做到这一点吗?