我在我的 Rails API 中遇到了互斥问题。我的数据库中有一些 Event 对象,其中包含将参加该活动的人数。
考虑我的 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
在同一个对象上排队该方法。
有没有办法做到这一点 ?