레일스 검증
Rails 유효성 검사 참고 사항
데이터베이스를 생성할 때 우리는 데이터가 유효하기를 원합니다. 즉, 예측 가능한 방식으로 데이터와 상호 작용할 수 있도록 데이터베이스의 데이터가 특정 유형 및 형식이기를 기대합니다.
소개
예를 들어 사용자의 이메일 주소를 저장하는 경우 해당 이메일 주소에 특정 구문 기능이 포함되어 있을 것으로 예상합니다. Mishel Shaji describes 과 같이 이메일 주소에는 사용자 이름(예: "johnsmith"), @ 기호, 도메인 이름(예: "gmail"), 점(".") 및 도메인 확장자(예: "edu")가 포함되어야 합니다. . 사용자 이름, 도메인 이름 및 도메인 확장자는 인터넷 공식 프로토콜 표준에 의해 결정된 특정 구문 요구 사항을 준수해야 합니다. 그건 그렇고, 삶에서 좀 더 기술적이고 논픽션적인 독서가 필요하다고 생각되면 RFC 5322 및 RFC 6854에서 이메일 주소 표준화에 관한 RFC(Request For Comments)를 확인하십시오.
데이터베이스의 이메일 주소가 이러한 표준과 일치하는지 확인하려면 유효성 검사를 사용해야 합니다. 물론 Martian 언어에 능통하다고 가정하고 다음StackOverflow answer에 있는 것과 같은 정규식 코드를 작성할 수 있습니다.
(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|"(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21\x23-\x5b\x5d-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])*")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\[(?:(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9]))\.){3}(?:(2(5[0-5]|[0-4][0-9])|1[0-9][0-9]|[1-9]?[0-9])|[a-z0-9-]*[a-z0-9]:(?:[\x01-\x08\x0b\x0c\x0e-\x1f\x21-\x5a\x53-\x7f]|\\[\x01-\x09\x0b\x0c\x0e-\x7f])+)\])
정규식이 유효성 검사에 대한 이상적인 접근 방식인 완전히 유효한 상황이 있다고 확신합니다. 그러나 Flatiron School과 함께한 Ruby on Rails 프로젝트의 경우 Rails의 내장 유효성 검사 매크로가 선호되는 접근 방식이었습니다.
고맙게도 Rails로 백엔드를 개발할 때의 이점 중 하나는 무거운 작업을 수행할 수 있는 유효성 검사 도구가 내장되어 있어 코드를 간결하고 읽기 쉽게 유지할 수 있다는 것입니다.
레일스 검증
Ruby on Rails guide에서는 검증을 방법으로 설명합니다.
to ensure that only valid data is saved into our database.
따라서 Rails 유효성 검사 도구를 사용하여 사용자가 이메일 주소가 joe@[email protected]
인 계정을 만들려고 하면 Rails는 여러 가지 이유로 표준 이메일 주소 구문을 준수하지 않기 때문에 새 항목을 데이터베이스에 저장하지 않습니다. "@"기호 사용.
Rails 프로젝트에 유효성 검사를 포함하는 방법
유효성 검사는 모델의 "validates"키워드를 명시적으로 사용하여 유효성 검사를 받는 테이블 속성("email")과 속성에 대해 수행되는 유효성 검사 유형("format", "존재"및 "고유성").
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP },
presence: true,
uniqueness: { case_sensitive: false }
유효하지 않은 데이터를 처리하는 방법
유효성 검사가 실패하면(즉, "유효하지 않음"반환) 유효성 검사 단계에서 생성된 모든 오류 메시지를 수집할 수 있습니다! 이는 디버깅을 위해 개발하는 동안 개발자에게 유용할 뿐만 아니라 애플리케이션 사용자에게도 유용합니다. 예를 들어 경고 메시지에 표시하기 위해 전체 오류 메시지 배열을 프런트 엔드에 전달할 수 있습니다.
이메일 유효성 검사 예제로 돌아가서 다음과 같이 프런트 엔드로 반환하는 JSON 개체에 유효성 검사 오류 메시지 배열을 포함할 수 있습니다.
render json: { errors: e.record.errors.full_messages }, status: :unauthorized
이 예에서 반환된 오류 메시지에는 데이터베이스 속성 이름이 포함되어 있습니다(예: 이메일 주소가 입력되어 API에 제출되지 않은 경우 JSON 개체의 "errors"키에는 "Email is blank"라는 메시지가 포함된 배열이 포함됨). .
React 프런트 엔드가 API에서 "ok"상태를 수신하지 않으면 useState 후크를 사용하여 오류를 상태에 저장한 다음 오류 메시지를 사용자 대면 경고에 매핑할 수 있습니다.
fetch("/login", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email: formData.email,
password: formData.password,
}),
}).then((response) => {
setIsLoading(false);
if (response.ok) {
response.json().then((user) => onLogin(user));
} else {
response.json().then((err) => setErrors(err.errors));
}
});
특정 API 작업에 대한 유효성 검사를 실행하지 않으려면 어떻게 합니까?
특정 작업에 대한 유효성 검사를 건너뛸 수 있습니다. 데이터베이스에 손상되거나 잘못된 형식의 데이터가 저장될 수 있으므로 이 작업을 수행할 때 주의하십시오. 유효성 검사를 건너뛰는 메서드에 대해 알아보려면 section 1.3 of the Rails Guide on Validations을 확인하십시오.
결론
Rails의 내장 유효성 검사는 예측 가능한 데이터로 건전한 데이터베이스를 유지하기 위해 작성해야 하는 코드의 양을 줄이는 좋은 방법입니다. Rails 유효성 검사 방법에 대한 자세한 내용은 Active Record Validations guide 을 확인하십시오.
데이터베이스와 관련된 프로젝트에서 작업한 경우 그룹에서 데이터 유효성 검사를 어떻게 처리합니까? 조직에서 조직으로 꽤 표준적인 방법이 있습니까?
Reference
이 문제에 관하여(레일스 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/nicm/rails-validations-540m
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
to ensure that only valid data is saved into our database.
validates :email, format: { with: URI::MailTo::EMAIL_REGEXP },
presence: true,
uniqueness: { case_sensitive: false }
render json: { errors: e.record.errors.full_messages }, status: :unauthorized
fetch("/login", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({
email: formData.email,
password: formData.password,
}),
}).then((response) => {
setIsLoading(false);
if (response.ok) {
response.json().then((user) => onLogin(user));
} else {
response.json().then((err) => setErrors(err.errors));
}
});
Reference
이 문제에 관하여(레일스 검증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/nicm/rails-validations-540m텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)