2014-03-26 3 views
2

다른 사람의 API에서 가져온 배열의 일부인 경우 모델 이름을 확인하고 싶습니다. 레일 4 유효성 검사가 작동하지 않습니다.

class Model < ActiveRecord::Base 
    validate :exists_at_api? 

    def exists_at_api? 
    api_data.detect { |d| d == self.name } 
    end 
end 

문제

내가 잘못된 데이터

유효성 검사가 호출됩니다를 보낼 때 발생하고 false을 반환하지만이 모델은 여전히 ​​저장됩니다. 나는이 간단한 무언가, 누군가가 올바른 방향으로 날 지점 수 있습니다 확신

validate :name, if: :exists_at_api? 

:

는 또한 같은 결과 위의 변화를 시도?

답변

4

오류를 나타내려면 errors 해시에 뭔가를 추가해야합니다. 자세한 내용 및 예는 the Rails documentation을 참조하십시오.

validate :exists_at_api? 

def exists_at_api? 
    if api_data.detect { |d| d == self.name } 
    errors.add(:name, "can't be whatever...") 
    end 
end 
+0

아, 맞아, 그 의미가 있습니다 :

같은 것을보십시오. – Eugene

+0

api_data.detect {가 아닌 | d | d == self.name}' – usha

+0

나는 그것을 작동 시켰고, 가능한 한 빨리 대답을 받아 들일 것이다. – Eugene

관련 문제