2017-01-31 1 views
0

Simple-Form은 validates :xxx, presence: true 유효성 검사가 자동으로 감지되어 필드를 필수 필드로 표시합니다 (예 : 레이블에 별표가 추가 된 경우).).단순 양식 및 필수 입력란 : 유효성 검사에 조건이 추가 된 경우 필요에 따라 처리하지 않습니다.

최대한 빨리이 검증에 조건을 추가로 흥미롭게 asterisk

, ...

validates :parent, presence: true, if: -> { true } 

을 ... 그것은하지 않습니다

validates :parent, presence: true 

이것은 결과 더 이상이 :

no asterisk

이것은 버그 또는 기능입니까?

답변

1

예상되는 동작이므로 유효성 검사는 개체를 db에 저장할 때만 실행되므로 람다가 그 때까지 true를 반환하는지 여부를 알 수 없습니다. 물론 귀하의 경우에는 항상 true을 반환하지만 람다 또는 기타 복잡한 조건에서 시간 제약이 있다고 상상해보십시오.

...., -> { Time.zone.now > Date.new(2017, 1, 1) } 

아마 당신은이 false를 반환하는 형식의 개체를 만들 수 있지만 때 양식은 실제로 true을 반환 할 충분한 시간이 경과 한 DB를 제출하고 저장 될 때.

따라서 필드가 필요한지 여부에 관계없이 양식을 만들 때를 simple_form에서 알 수있는 방법이 없습니다.

0

고의적이기 때문에이 기능을 호출 할 수 있습니다. 보석 코드 (특히 calculate_requiredconditional_validators?)를 살펴보면 현재 유효성 검사기에 if 또는 unless과 같은 조건이있는 경우 더 이상 필요하지 않음을 알 수 있습니다. 이와

validates :terms, presence: true, acceptance: true 

는 '용어'확인란이 선택의 유일한 이후에 제출되는 것을 확인하기 위해 폼 수준에서 유효성을 검사 :

0

나는 :terms이 체크 박스 요소 것에 대해 다음과 같이 해결했다. 그것이 누군가를 돕기를 바랍니다.

관련 문제