특정 레코드를 반환하는 메소드가있는 MyModel
모델이 있습니다 (아래 로직 참조).for 루프, 예기치 않은 복귀가있는 ruby 메소드
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
클래스의 각 레코드는 변수 expdate
Date
클래스가 있습니다.
- 이 방법은 적절한 기록을 발견하기 전에 몇 가지 바람직하지 않은 레코드를 반복한다 (나는.이 내 자신의 교화에 더 또한 몇 가지 테스트 코드,이 기록을 찾을 수있는 끔찍한 방법을 알고)하지만 기록 반환 된 값은 항상 첫 번째 레코드 인
note 1
입니다. 여기에 어떤 게으른 일이 있습니까? self
을note2
에 추가해야 정적 컨텍스트에서 메서드를 호출 할 수 있습니다. 이것이 올바른 해석입니까?
루프가 반복되는 것을 어떻게 생각합니까? –
내 터미널에서 원하지 않는 레코드를 찾는 여러 개의 DB 히트를 볼 수 있습니다. – yamori
더 많은 정보 (루프의 앞, 뒤, 뒤의'rec.expdate '의 일부 디버깅 출력)를 추가해야합니다. –