반응형
속성이있는 경우에만 유효성 검사 (사용자가 입력 한 경우에만)
비어 있지 않은 경우에만 일부 속성의 유효성을 검사해야합니다.
예를 들어 사용자에게 로고가있을 수 있습니다. 로드하려고하면 유효성 검사가 작동합니다. 로고없이 사용자 데이터 만 업데이트하는 경우 유효성 검사를 건너 뛰어야합니다.
지금 나 한테있어:
양식에는 두 개의 파일이 있습니다. 하나-로고, 두 번째-아바타. 이 두 속성은 모두 사용자 모델의 일부입니다. 사용자 모델에서 유효성 검사가 있습니다.
validates_preference_of :logo_file_name, :message=>I18n.t("...")
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
validates_preference_of :avatar_file_name, :message=>I18n.t("...")
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("...")
이 경우 로고와 아바타를 선택하지 않고 새 사용자를 만들려고하면 오류 (인증)가 발생합니다. 변경 유효성 검사를 시도하고 다음과 같이 ": on => : update"를 추가합니다.
validates_preference_of :logo_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :logo_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
validates_preference_of :avatar_file_name, :message=>I18n.t("..."), :on => :update
validates_format_of :avatar_file_name, :with=>/\.(jpeg|jpg|png|gif)$/i, :message=> I18n.t("..."), :on => :update
이제 선택한 로고와 아바타없이 사용자를 생성 할 수 있지만, 사용자 편집을 시도하고 로고 만 업로드하면 아바타의 유효성 검사 오류가 발생합니다. 아바타 및 로고 파일을 선택하면 비워 두십시오-로고 유효성 검사 오류가 있습니다.
변경하려는 속성에 대한 유효성 검사를 어떻게 실행할 수 있습니까?
추가 :allow_blank => true
하면 원하는 작업을 수행 할 수 있습니다.
어쩌면 :if => lambda {|attr| attr.present?}
도움이 될 것입니다?
일부 유효성 검사에서는 :allow_blank => true
또는 :allow_nil => true
.
이것이 실패하면 다음과 같이 : if 조건을 사용하십시오.
validates_format_of :avatar_file_name,
:with=>/\.(jpeg|jpg|png|gif)$/i,
:message=> I18n.t("..."),
:on => :update,
:if => lambda{ |object| object.avatar_file_name.present? }
하지만 허용을 사용하는 것이 좋습니다. 훨씬 더 깨끗합니다.
반응형
'Nice programing' 카테고리의 다른 글
캘린더에 항목을 추가하기위한 링크를 생성하려면 어떻게합니까? (0) | 2020.12.03 |
---|---|
Google지도에서 div를 플로팅하는 방법은 무엇입니까? (0) | 2020.12.03 |
Ruby-Rails로 폴더의 모든 내용을 삭제하는 방법은 무엇입니까? (0) | 2020.12.03 |
null이 아니고 비어 있지 않은 ( "")에 대한 Elasticsearch curl 쿼리 생성 (0) | 2020.12.03 |
부울에 대한 ng-repeat 필터 (0) | 2020.12.03 |