有一個簡單的方法:在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