유효성 검사
Mongoid에는 기본 유효성 검사 와 추가 관련 및 고유성 유효성 검사기를 제공하는 ActiveModel::Validations
가 포함되어 있습니다.
활성 레코드 유효성 검사 를 참조하세요. Rails 가이드 및 ActiveModel::Validations 자세한 내용은 설명서를 참조하세요.
Mongoid는 이미 지속된 데이터에 #valid?
를 사용할 때 Active Record와 약간 다르게 동작합니다. Active Record의 #valid?
는 모든 유효성 검사를 실행 하는 반면 Mongoid의 #valid?
는 최적화를 위해 메모리에 있는 문서에 대해서만 유효성 검사를 실행 합니다.
validates_uniqueness_of
및 :conditions
옵션
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")
읽기 기본 설정: validates_uniqueness_of
속성의 고유성을 검증하려면 Mongoid는 해당 속성의 값이 데이터베이스 에 이미 존재하지 않는지 확인해야 합니다. Mongoid가 복제본 세트 의 세컨더리 멤버를 쿼리하는 경우, 오래된 데이터를 읽고 있을 가능성이 있습니다. 이 때문에 validates_uniqueness_of
유효성 검사 를 확인하는 데 사용되는 쿼리는 항상 읽기 설정 (read preference) primary
을 사용합니다.