2012-02-14 3 views
0

ruby ​​on rails 3.0.3 app은 장바구니를 고객에게 보여줄 때 빈 주소 양식을 표시합니다. 나는 그것이 유효성 검사 조건에도 불구하고 작동하는 빈 양식을 검증 경우유효성 검사 및 중첩 된 양식

validates :nom,:prenom,:adresse,:code_postal,:ville,:email, :presence => true 

:

요지 모듈은 모든 필드의 존재를 부탁드립니다. 양식을 작성하고 다음 페이지로 이동 한 다음 채워진 작성 양식으로 돌아갑니다. 이제 필드를 제거하면 valiates가 고려됩니다. 여기

는 show 액션의 중첩 된 형태에 대한 내 빈 주소 생성 코드입니다 :

if (@cartshowed.adresse_client.nil?) 
     @cartshowed.build_adresse_client 
     end 

나는 빈 주소 확인을 usind 때 무시 추측하지만, 곧 내가 이미 유효한 데이터의 유효성을 검사로 그것을 주소서.

에디션뿐만 아니라 주소를 만들 때 어떻게 유효성을 검사 할 수 있습니까?

추신 : 편집/생성은 동일한 컨트롤러를 통해 동일한 페이지에서 수행됩니다. 에디션은 존재하지 않지만 작동합니다.

편집 : 몇 가지 시도 후 내 문제는 중첩 된 양식을 통해 adresse completly overriddes 주소 필드의 유효성을 검사한다는 것입니다. 중첩 된 양식의 제한을 어떻게 확인할 수 있습니까?

답변

0

곧 내가 내 아이의 검증 reject_if 사용할 때 모델이 아닌 것 같다 totaly는 고려했다. reject_if를 제거하면 모든 문제가 해결되었습니다. 이제 컨트롤러의 update_attributes 단계에서 validate 요구 사항을 따르지 않는 빈 폼이나 양식이 올바르게 거부됩니다.

1

Addresse가 중첩 속성 (즉, 장바구니 has_one 주소) 인 경우 :reject_if Proc를 추가 할 수있는 을 사용해야합니다.

accepts_nested_attributes_for :addresse, :reject_if => :any_blank 

라이언 Daigle보다 더 나은 예를 들어 줄 수 없었다 :

http://archives.ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes

http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html#method-i-accepts_nested_attributes_for

+0

문제가 변경되지 않습니다. 'proc {| attrs | attrs.all? {| k, v | v.blank? }}' 빈 필드를 거부해야합니다. 여전히 update_attributes 메소드를 전달할 수 있습니다. 다시 한번 주소의 유효성 확인은 주소가 생성 될 때만 무시됩니다. – Syl

+0

reject_if 표시에 감사드립니다. accepts_nested_attributes_for 행에 reject_if가 없으면 실제로 의도 한대로 작동합니다. – Syl