복붙노트

[RUBY-ON-RAILS] 레일 : (함께) 두 열의 유효성 검사 고유성

RUBY-ON-RAILS

레일 : (함께) 두 열의 유효성 검사 고유성

내가 (다른 사람의 사이에서) 중간 및 국가 열 릴리스 모델을 가지고있다. 동일 매체 / 국가 조합을 공유 출시가 없어야합니다.

어떻게 레일 검증으로 이것을 쓰는 것?

해결법

  1. ==============================

    1.당신은 범위 옵션과 고유성 검증을 사용할 수 있습니다.

    당신은 범위 옵션과 고유성 검증을 사용할 수 있습니다.

    또한, 기록되기 전에 동시에 검사 할 때 유효성 검사를 통과하는 새 레코드를 방지하기 위해 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
    
  2. ==============================

    2.위의 모든 답변은 모델에서 여러 속성의 고유성을 확인하는 방법을 누락되었습니다. 아래 코드는 범위에서 여러 속성을 사용하는 방법에 대해 이야기 할 예정이다.

    위의 모든 답변은 모델에서 여러 속성의 고유성을 확인하는 방법을 누락되었습니다. 아래 코드는 범위에서 여러 속성을 사용하는 방법에 대해 이야기 할 예정이다.

    validates :country, uniqueness: { scope: [:medium, :another_medium] }
    

    그것은 중간 another_medium의 값을 가진 모든 행에 국가의 고유성을 확인합니다.

    참고 : 음주이이 보험 빠른 검색, 위의 컬럼에 인덱스를 추가하는 것을 잊지 독특한 기록에 대한 DB 수준 유효성 검사를 추가하지.

  3. ==============================

    3.이처럼 검증에 범위 매개 변수 : 당신은 전달할 수 있습니다 :

    이처럼 검증에 범위 매개 변수 : 당신은 전달할 수 있습니다 :

    validates_uniqueness_of :medium, scope: :country
    

    몇 가지 더 많은 예제에 대한 설명서를 참조하십시오.

  4. from https://stackoverflow.com/questions/34424154/rails-validate-uniqueness-of-two-columns-together by cc-by-sa and MIT license