2011-03-27 10 views
0

나는 Tournament라는 모델을 가지고 있는데, has_many 엔트리. 토너먼트에는 reset_rankings이라는 항목이 있습니다.이 항목은 모든 항목을 탐색하고 항목에 현재 얼마나 많은 지점이 있는지에 따라 각 항목의 current_rank 필드를 업데이트합니다. 이 traversal에서 업데이트하는 각 항목마다 entry.save이라고 부릅니다.has_many 관계의 하위 항목을 어떻게 업데이트합니까?

이 방법은 메모리의 항목을 업데이트하는 것으로 보이지만, reload 토너먼트에서 current_rank 필드는 모두 reset_rankings을 호출하기 전에 되돌려 놓았습니다.

나는 reset_rankings를 호출 한 후 tournament.save를 호출하려고하지만 여전히 변화

내가 멍청한 짓을하고있는 중이 야 확신을 지속하지 못했지만, 내가 예상처럼 레일 마법이 작동하지 않습니다.

답변

1

entry.save를 호출하면 반환 값을 확인하고 있습니까? false 인 경우 어떤 이유로 저장이 차단되었습니다 (예 : 유효성 검사를 통과하지 못했음).

또는 foo.save를 foo.save로 변경하십시오! 저장 실패시 오류를 발생시킵니다.

+0

감사합니다. 도움이되었습니다. 유효성 확인으로 인해 저장에 실패했습니다. –

+0

도와 줘서 기쁩니다. 많은 사람들이 저를 포함하여이 문제에 걸렸습니다. 유효성 검사는 생성 할 때마다, 저장 할 때마다 실행되도록 작성 될 수 있음을 기억하십시오. 또한 유효성 검사에서 "전문가 모드"또는 "재설정 모드"를 사용할 수 있습니다. 유효성 검사에서 인스턴스 변수의 값을 확인하십시오. 그런 다음 모델이 재설정 모드에있을 때만 인스턴스 변수를 설정하십시오. 기타. –

관련 문제