사용자 지정 ActiveRecord 유효성 검사를 구현하는 방법 — Ruby On Rails

Ruby on Rails에는 놀라운 docs on validations이 있습니다. 이 블로그 게시물에서는 사용자 지정 유효성 검사를 다루고 싶지만 Rails가 제공하는 표준 활성 레코드 유효성 검사도 소개합니다.
  • ActiveRecord 유효성 검사
  • 맞춤형 검증:
    ■ 방법으로
    ■ 별도의 클래스로

  • 활성 레코드 유효성 검사



    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)



    이제 유효성 검사기를 여러 클래스에서 사용할 수 있습니다.



    이 가이드가 귀하와 귀하의 팀에 도움이 되었다면 다른 사람들과 공유하십시오!

    좋은 웹페이지 즐겨찾기