2014-02-18 2 views
-2

모델의 유효성을 이미 확인했는지 확인하는 방법?유효성 검사가 이미 호출되었는지 확인

u = User.new 
u.name = "Ralph" 
u.valid? # => true 
u.validated? # => false 

너무 많은 지오 코딩을 방지하고 싶습니다. 당신이 before_validation :geocode 콜백이있는 경우

+0

어떤 문맥에서 건너 뛰시겠습니까? 건너 뛴다는 것은 무엇을 의미합니까? 너는 무엇을 지오 코딩하고 있는가? 'user.rb'를 게시 할 수 있습니까? – OneChillDude

+0

'u.save'를 실행하면 유효성 검사를 한 번만하고, 유효하지 않으면'false'를 반환합니다. –

+0

마이너스 3은 무겁다 ... 나는이 모델이 이미 "검증 된"것인지 알고 싶다. 유효성 검사 프로세스를 다시 시작해서는 안됩니다. 예를 들어,'''before_validation : geocode'''는 모델이 유효화 될 때마다 히트 될 것입니다. 하지만 내 Google 검색 파견을 저장하기 위해 한 번만 실행하고 싶습니다. 그래서 나는 "유효성이 입증 된 것"이라고 생각했다. 메서드를 사용하여 유효성 검사 프로세스가 이미 완료되었는지 확인합니다. 나는 그것이 지금 더 분명하기를 바란다. – Jan

답변

0

당신은 무거운 코드 결과이 방법을 캐시하기 위해 geocode 방법을 향상시킬 수 해시 값으로

def geocode 
    @geocode_results ||= {} 
    # suppose geocoding depends on `lat_lon` attribute 
    @geocode_results[lat_lon] ||= begin 
    # Your heavy code here 
    end 
end 

캐싱 변경 사항을 lat_lon 때 지오 코딩을 다시 할 수 있습니다.