나는 active
열이있는 모델을 가지고 있습니다.이 모델은 부울입니다. 이 false
으로 설정되어 있으면 company_id
에 대해 새로 추가 된 모든 레코드의 고유성을 확인하여 원하는만큼 많은 레코드를 추가 할 수 있습니다. 각 company_id
에 대해 하나의 active
레코드 만 있어야합니다.Rails 3은 열에 대해 하나의 값의 고유성을 확인합니까?
어떻게 작성하나요? 나는 이미 시도했다 :
validates :company_id, :uniqueness => { :scope => :active }
하지만 그 또한 관계없이, 나는 같은 active
상태 테이블에 두 개 이상의 company_id
년대를 가질 수 없어 false
(있도록되는 active
의 독특한 조합에 대한 유효성을 검사하는 것 무엇 active
입니다) - 위의 유효성 검사는 company_id
에 대해 두 개의 레코드를 허용합니다. 하나는 active = false
이고 다른 하나는 active = true
입니다. 이 두 레코드가 들어 오면 검증은 다른 모든 것을 차단합니다.
scope :active, where(:active => true)
을하지만 그 (위와 같이 동일한 문제가) 전혀 검증을 변경하지 않는 것 :
나는 다음이를 추가했습니다.
내가 너무 오래 active
이 거짓 같은 company_id
에 많은 레코드를 추가, 만 company_id
당 하나의 active = true
을 허용 할 수 있도록이 검증을 쓸 수 있습니까?
이 다음 여부를 확인하는, 내가 TRUE ''로 설정 active''와 빈 테이블에 새로운 레코드를 추가하려고하는 내 첫 번째 테스트 케이스의 패스를하지 않습니다 'active'가'true'로 설정된 또 다른 새로운 레코드는 유효하지 않거나 (같은'company_id'를 가진) 유효하지 않습니다. 사실, Proc가 호출되지 않는 것 같습니다. – neezer
이 _answer_은 여러 가지 방법으로 구분되어 있습니다. – smathy