有一个简单的方法:在Rails中更新和保存activerecord字段?
def get_award(user)
u = User.find(user).score += 10
u.save
end
我的问题是,是否有潜在的竞争条件导致用户get_award
两次,但只得到10分?如何避免它?
有一个简单的方法:在Rails中更新和保存activerecord字段?
def get_award(user)
u = User.find(user).score += 10
u.save
end
我的问题是,是否有潜在的竞争条件导致用户get_award
两次,但只得到10分?如何避免它?
您需要获取'用户'实例,更新分数并保存。在你的代码中,你正在保存类,而不是实例化对象:
def get_award(user)
u = User.find(user).score += 10
u.save
end
是的,这是可能的。
相关的问题:How do I avoid a race condition in my Rails app?
您可以采用两种锁定乐观&悲观
http://guides.rubyonrails.org/active_record_querying.html 看点10号
更新不正确的..错字? – 2011-12-30 09:16:01