我有一個模型MyModel
與返回一個特定的記錄(見下面的邏輯)的方法。紅寶石方法與for循環,意外返回
def self.find_future_rec #note2
rec = find(rand(MyModel.count)+1) #note1
while rec.nil? | (rec.expdate<Date.today)
rec = find(rand(MyModel.count)+1)
end
return rec
end
MyModel
類的每個記錄具有可變Date
類expdate
。 (我知道這是要找到一個記錄一個可怕的方式,這更是對我自己的薰陶,還有一些測試代碼。)
- 這個方法找到適當的記錄之前,經過幾個不良記錄重複,但記錄返回的總是在
note 1
找到的那個,第一個記錄被查詢。這裏有一些懶惰的任務嗎? - 我必須在
note2
處添加self
以便能夠在靜態上下文中調用該方法。這是正確的解釋嗎?
是什麼讓你認爲你的循環迭代? –
在我的終端中,我可以看到多個數據庫匹配,找到一個理想的數據後停止尋找不良記錄。 – yamori
您必須添加更多信息(例如,在循環之前,之內和之後的'rec.expdate'的一些調試輸出)。 –