我已經構建了一個使用Wire2sms API集成SMS投票的應用程序。 並且我在模型中添加了answer_id的唯一性。但由於同時發生多個併發請求,所以模型無法處理它,並且使用相同的answer_id創建多個記錄。有沒有人遇到過這個問題?或有任何指針處理相同在Rails數據庫中處理併發請求的唯一性
感謝您的幫助。
我已經構建了一個使用Wire2sms API集成SMS投票的應用程序。 並且我在模型中添加了answer_id的唯一性。但由於同時發生多個併發請求,所以模型無法處理它,並且使用相同的answer_id創建多個記錄。有沒有人遇到過這個問題?或有任何指針處理相同在Rails數據庫中處理併發請求的唯一性
感謝您的幫助。
最好的選擇是將一個唯一性約束添加到底層數據庫。 Rails的唯一性驗證實際上應該是額外的(對於更漂亮的錯誤等)。由於數據庫將是數據的最終權威,因此應該是執行約束的人員。
本傑明感謝您的response.can你建議任何其他方式,因爲數據庫約束可能會引發異常,因爲我的實時數據庫現在已經有很多重複值。 –
你能通過並清理舊數據嗎?這真的是最好的方式。一種可能的選擇是某種形式的[悲觀鎖定](http://api.rubyonrails.org/classes/ActiveRecord/Locking/Pessimistic.html)對應於唯一'answer_id'的答案,或者是一個表寬鎖在你插入的模型上。 –
同樣的問題也在這個博客中解決。 http://blog.mhartl.com/2008/06/26/working-around-the-validates_uniqueness_of-bug-in-ruby-on-rails/,但尋找更好的解決方案 –