2011-03-17 5 views
0

최초 사용자 오랜 시간 독자. 필자는 강력한 검색 엔진 인 Google을 통해 문제가 발생했는지에 대한 설명을 철저하게 모색했지만, 아쉽게도 중요한 통찰력을 얻지 못했습니다.레일 유효성 검사는 실패하지만 객체 메모리는 변경되지 않습니다.

모델 양식이 유효하지 않은 데이터로 다시로드되지 않도록 할 수 있어야합니다. 서버의 메모리에 저장된 모델은 먼저 웹 양식의 매개 변수로 직접 편집되고 추가 코드없이 유효성을 검사 한 후 잘못된 모델 데이터가 항상 양식으로 다시 전송됩니다. 이것은 나에게 바람직하지 못한 것입니다. 내 질문은 이것입니다 : 어떻게 이런 일이 일어나지 않도록해야합니까?

내가 생각하기에 객체의 상태를 웹 양식에서 전송 된 매개 변수로 수정하기 전에 개체를 저장하는 데 필요한 메커니즘이 필요하다. 그런 다음 유효성 검사 실패 후 개체를 이전의 수정 가능하고 수정되지 않은 개체로 복원한다. 존재의 상태.

도움말!

감사합니다, 레

답변

0

검증 개체가 형식에 유효하지 않은 상태 임에도 불구하고, 실패하면 객체가 실제로 DB에 수정되지 않습니다 ...이 뒤에 사고는 사용자가 원하는 것입니다 그들이 만든 오류를보고 수정할 수 있습니다.

그럴 필요가 없다면 WhateverObject.find (x)를 사용하여 객체를 다시 읽고 양식이 참조하는 변수에 할당하면 객체를 '복원'합니다. 이전의 수정되지 않은 상태.

+0

만약 당신이 이미 객체를 가지고 있다면, 당신은 단지 my_obj.reload를 사용하여 데이터베이스로부터 상태를 재로드 할 수 있습니다. – Shadwell

+0

사실, 당신이 만든 오류를 보는 것이 유용 할 수 있습니다. 내 구체적인 경우에는별로 중요하지 않지만, 그것이 미래에 기억해야 할 중요한 포인트입니다. 필자의 경우 모델 컨트롤러의 update 메소드의 else 절에서 model.reload를 호출 할 수 있었고 완벽하게 작동했으며 정확히 찾고자했습니다. –

0

이 가 액티브에서보세요 object.field_was 당신은 또한 을 사용하여 특정 필드의 값을 얻을 수있는 것을 특징으로하는 것을 concept47 추가하려면 : (자세한 내용은 더러운 http://ar.rubyonrails.org/classes/ActiveRecord /Dirty.html)

유효성 검사 오류가있는 필드의 원래 값을 검색 할 수 있습니다.

관련 문제