0
我有一個需要,我必須從數據庫中返回一條記錄,然後更新它,以便下次不返回相同的記錄。這是製作實時隊列所必需的。 我面臨的問題是在同一時刻我的行動正在發生多個電話。由於這個原因,相同的記錄正在返回給多個用戶。 我試過用鎖!函數,但它會寫入鎖定而不是讀取鎖定。 請建議一些方法來實現這一點。順序執行的行動軌道
我有一個需要,我必須從數據庫中返回一條記錄,然後更新它,以便下次不返回相同的記錄。這是製作實時隊列所必需的。 我面臨的問題是在同一時刻我的行動正在發生多個電話。由於這個原因,相同的記錄正在返回給多個用戶。 我試過用鎖!函數,但它會寫入鎖定而不是讀取鎖定。 請建議一些方法來實現這一點。順序執行的行動軌道
嘗試通過創建遷移數據庫添加新柱說read_locked
類型爲布爾和默認爲false(只是爲了保持簡單)
def change
add_column :your_table_name, :read_locked, :boolean, default: false
end
然後使用默認的範圍上型號
default_scope where(:read_locked => false)
下一次你想鎖定一些記錄,你只需要將read_locked
的值更改爲true
model_object.read_locked = true
model_object.save
之後,所有的請求被read_locked將被轉義
希望這有助於