답변:
옵션 과 함께 고유성 유효성 검사를 사용할 수 있습니다 scope
.
또한 작성하기 전에 동시에 검사 할 때 새 레코드가 유효성 검사를 통과하지 못하도록 DB에 고유 인덱스를 추가해야합니다.
class AddUniqueIndexToReleases < ActiveRecord::Migration
def change
add_index :releases, [:country, :medium], unique: true
end
end
class Release < ActiveRecord::Base
validates :country, uniqueness: { scope: :medium }
end
unique
인식되지 않는 경우 -1입니다 . 그 부분에 대해서는 아래 답변을 사용했습니다.
uniqueness
아니 어야합니다 unique
. 링크 된 문서를 참조하십시오. 답을 수정합니다.
위의 모든 답변에는 모델에서 여러 속성의 고유성을 확인하는 방법이 없습니다. 아래 코드는 범위에서 여러 속성을 사용하는 방법을 알려줍니다.
validates :country, uniqueness: { scope: [:medium, :another_medium] }
및 country
값이있는 모든 행에서의 고유성을 확인합니다 . medium
another_medium
참고 : 위 열에 인덱스를 추가하는 것을 잊지 마십시오. 이렇게하면 빠른 검색이 보장되고 고유 레코드에 대한 DB 수준 유효성 검사가 추가됩니다.
업데이트 : 테이블 생성 중 인덱스 추가
t.index [:medium, :another_medium], unique: true
:scope
다음과 같이 유효성 검사기에 매개 변수를 전달할 수 있습니다 .
validates_uniqueness_of :medium, scope: :country
더 많은 예제 는 설명서 를 참조하십시오 .