2016-12-16 14 views
0

モデルが変更された場合、ループを終了しようとしています。 status属性持つモデルが変更された場合にループを停止

@model.status = 'started' 

(0..100).each do |i| 
    return if status == 'stopped' 
    sleep(10) 
    # my taks... 
end 

問題があるが、一度startedモデルの変更ループ内で反映されない、任意のアイデアですか?

答えて

0

ループ内のステータスを照会して、ステータスが更新されるようにする必要があります。

(0..100).each do |i| 
    status = Model.find(:id).status 
    return if status == 'stopped' 
    sleep(10) 
    # my taks... 
end 
+1

'self.reload'は' status = Model.find(:id).status'よりも優れています。モデルからデータベースをリフレッシュします。あなたが書いても、 'return if self.reload.status == 'stopped'' – nburkley

関連する問題