사용자 지정 ActiveRecord 유효성 검사를 구현하는 방법 — Ruby On Rails
■ 방법으로
■ 별도의 클래스로
활성 레코드 유효성 검사
Rails는 일반적으로 사용되는 유효성 검사(존재, 수치, 고유성 등)를 신속하게 수행하기 위해 기본적으로 다양한 도우미를 제공합니다. 모델에 표준 도우미를 넘어서는 유효성 검사가 있는 경우 사용자 지정 유효성 검사 전략을 구현해야 합니다. 생성하려는 인스턴스에 필요한 모든 속성이 있는지 확인하는 이 메서드를 예로 들어 보겠습니다.
name
이 고유하고 특정 길이이며 특정 문자 등을 포함(또는 포함하지 않음)해야 하는 경우 기본 유효성 검사를 사용할 수 있습니다. 정규식을 사용하는 이메일 유효성 검사도 있습니다. 유효성 검사를 위반한 경우 표시될 메시지를 지정할 수도 있습니다.맞춤 유효성 검사: 메서드
이제 유효성을 검사하려는 항목이 Rails에 포함되지 않으면 어떻게 됩니까? 맞춤 정규식을 사용하여 이메일을 확인하려는 경우.
사용자 지정 유효성 검사를 구현하려는 경우 validate
대신 validates
을 사용하고 그 아래에 선언한 메서드 이름을 추가합니다. 다음은 유효성 검사 및 유사 코딩된 메서드가 포함된 사용자 클래스입니다. 사용자 지정 유효성 검사를 비공개 메서드로 만들었다는 점에 유의하세요.
<script id="gist-ltag"src="https://gist.github.com/kananinirav/74e2a244225ba5250d8cc9ceb3789c2e.js"/>
사용자 지정 유효성 검사: 클래스
다른 모델에서 유사한 사용자 지정 유효성 검사를 사용하려면 클래스 유효성 검사를 만드는 것이 가장 좋습니다. 유효성 검사를 정의하고 모든 모델에서 사용하십시오. 이를 사용하여 비즈니스 요구 사항에 따라 자체 사용자 지정 유효성 검사 관리자를 만들 수 있습니다.
1. 새 폴더, 새 파일, 새 클래스
조직화를 위해 app
폴더에 app\validators
이라는 새 폴더를 만듭니다. 내부에서 이 코드가 수행하는 작업을 설명하는 이름의 새 파일을 만듭니다. 나는 내 이름을 email_validator.rb
으로 지정했습니다. 이제 내부에서 ActiveModel::EachValidator
을 상속하는 클래스를 작성합니다.
class EmailValidator < ActiveModel::EachValidator
end
2. 모델에서 유효성 검사 사용
이제 User 모델에서 이 유효성 검사기를 사용하겠습니다.
class User < ApplicationRecord
validates :email, email: true
end
3. 유효성 검사 방법을 작성합니다.
드디어 방법을 작성할 수 있습니다. 여기서는 value
매개변수를 사용하여 이메일을 확인합니다.
<script id="gist-ltag"src="https://gist.github.com/kananinirav/028c5dcef78aa24326b4c711dee3e3e7.js"/>
이메일이 잘못되면 어떻게 되나요? 이러한 상황에서는 오류가 발생합니다. 이를 위해 ActiveRecord 오류 메서드 add 을 사용하겠습니다. 이 메서드는 세 가지 인수를 허용합니다.
-
attribute
, 오류의 범위를 지정합니다. 속성 자체이거나 전체 레코드에 오류를 추가하는:base
일 수 있습니다. -
message
은 이 유효성 검사를 위반한 경우 표시되는 메시지입니다. 메시지가 존재하지 않으면 "잘못됨"으로 기본 설정됩니다. 메시지는 기호 또는 해시일 수 있습니다. 대부분의 경우 메시지를 보기 좋게 표시하려면 :invalidkey가 포함된 기호가 됩니다.
이제 발생하는 오류는 다음과 같습니다.
ActiveRecord::RecordInvalid (Validation failed: Email Please Enter Valid Email)
이제 유효성 검사기를 여러 클래스에서 사용할 수 있습니다.
이 가이드가 귀하와 귀하의 팀에 도움이 되었다면 다른 사람들과 공유하십시오!
Reference
이 문제에 관하여(사용자 지정 ActiveRecord 유효성 검사를 구현하는 방법 — Ruby On Rails), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/kanani_nirav/how-to-implement-custom-activerecord-validations-ruby-on-rails-1281텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)