2017-04-08 33 views
0

我有一個需要,我必須從數據庫中返回一條記錄,然後更新它,以便下次不返回相同的記錄。這是製作實時隊列所必需的。 我面臨的問題是在同一時刻我的行動正在發生多個電話。由於這個原因,相同的記錄正在返回給多個用戶。 我試過用鎖!函數,但它會寫入鎖定而不是讀取鎖定。 請建議一些方法來實現這一點。順序執行的行動軌道

回答

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將被轉義

希望這有助於