2011-09-18 4 views
1

나는 이것을 잠시 동안 작동하려고 노력해 왔으며, 어떻게해야 할지를 파악할 수없는 것 같습니다. 내가 사용할 수있는 request.env에 가치가있을 것으로 기대 했었습니다. 또는이를 수행하기 위해 고유성 검사기를 재정의하는 확실한 방법 이었지만 얻을 수 없었습니다.새 개체가 고유성 검증에 실패 할 때 발견 된 ID를 유지합니다.

그래서 고유성 검사기가 실패하면 db의 중복 정보가있는 레코드의 ID를 캡처하여 대신 사용할 수 있기를 원합니다. 아무도이 짓을 한거야?

+0

모든 고유성 검사기는 고유성의 유효성을 검사합니다. AFAIK를 사용하면 사용자 정의 유효성 검사기를 작성해야하는 동작을 중단시킬 수 있습니다. 유효성 검증으로 이것을하지 않는 것이 더 쉽습니다. 실제로 유효성을 검사하지는 않기 때문에 - 무언가가 발견되었는지 여부에 따라 조회를 수행하고 흐름을 변경하고 있기 때문입니다. –

+0

빠른 응답을 보내 주셔서 감사합니다. 상자 밖에서 생각하고 유효성 검사를 사용하지 않으면 훨씬 쉽게 수행 할 수 있다고 생각했습니다. – loucal

답변

0

대신 유효성 검사기를 사용하는 대신 find_or_create_by을 사용할 수 있습니다. 이미 존재하는 경우 이전 객체를 사용하고, 이전 객체가없는 경우 새 객체를 만듭니다. 그러면 모든 작업이 수행됩니다.

희망이 도움이됩니다.

추신 : 여기에 Official Rails Docs입니다. 원하는 부분이 약간 "동적 속성 기반 찾기"입니다. 그냥 첫 번째 링크가 더 유용하다고 생각합니다 ...

+0

고마워요 사비에! 나는 컨트롤러에서 일반 old find_by를 사용하여 그것을 구현하고 두 단계로 그것을 끝내었다. 그러나 당신은 find_or_create_by가 정확히 내가 찾고있는 것이다. 이것은 컨트롤러에서 '비즈니스 로직'으로 자격이 주어지기 때문에 조금 엉성함이 있지만 모델로 작업하는 방법을 알 수 있다고 생각합니다. – loucal

관련 문제