Docs Menu
Docs Home
/ / /
몽고이드
/

유효성 검사

이 페이지의 내용

  • validates_uniqueness_of:conditions 옵션
  • 읽기 기본 설정: validates_uniqueness_of

Mongoid에는 기본 유효성 검사 와 추가 관련 및 고유성 유효성 검사기를 제공하는 ActiveModel::Validations 가 포함되어 있습니다.

활성 레코드 유효성 검사 를 참조하세요. Rails 가이드 및 ActiveModel::Validations 자세한 내용은 설명서를 참조하세요.

Mongoid는 이미 지속된 데이터에 #valid? 를 사용할 때 Active Record와 약간 다르게 동작합니다. Active Record의 #valid? 는 모든 유효성 검사를 실행 하는 반면 Mongoid의 #valid? 는 최적화를 위해 메모리에 있는 문서에 대해서만 유효성 검사를 실행 합니다.

validates_uniqueness_of 에 대한 :conditions 옵션을 사용하여 동일한 문서를 찾는 데이터베이스 쿼리에 추가할 추가 조건을 제공할 수 있습니다. 이 옵션은 Mongoid가 모델에서 각 필드의 현재 값을 검색할 때 고려되지 않으므로 유효성 검사가 실행되는 시기에 영향을 주지 않습니다. 다음 예시를 살펴보겠습니다.

class Band
include Mongoid::Document
field :name, type: String
field :year, type: Integer
validates_uniqueness_of :name, conditions: -> { where(:year.gte => 2000) }
end
# OK
Band.create!(name: "Sun Project", year: 2000)
# Fails validation because there is a band with the "Sun Project" name
# and year 2000 in the database, even though the model being created now
# does not have a year.
Band.create!(name: "Sun Project")

속성의 고유성을 검증하려면 Mongoid는 해당 속성의 값이 데이터베이스 에 이미 존재하지 않는지 확인해야 합니다. Mongoid가 복제본 세트 의 세컨더리 멤버를 쿼리하는 경우, 오래된 데이터를 읽고 있을 가능성이 있습니다. 이 때문에 validates_uniqueness_of 유효성 검사 를 확인하는 데 사용되는 쿼리는 항상 읽기 설정 (read preference) primary 을 사용합니다.

돌아가기

연관 관계