모델이 Clients
이고 lastname
및 firstname
열을 가진 해당 데이터베이스가 있습니다. 원래는 [lastname, firstname]
의 고유성에 대한 제약이 없었으며 현재 데이터베이스에 중복 된 내용이 포함되어 있습니다. 데이터베이스를 정리하고 모델에 제약 조건을 적용하고 싶습니다 (예 : validates_uniqueness_of :lastname, scope: :firstname
).채워진 데이터베이스에 제약 조건 적용 (제약 조건을 위반하는 레코드 포함)
아이디어는 어떤 방식 으로든 데이터를 백업하고 빈 모델 데이터베이스에 제약 조건을 적용한 다음 데이터를 중복으로 가져 와서 별도로 처리하여 예외로부터 복구 할 수있게하는 것입니다.
그러나 나는 여기서 뭔가를하고 있다고 느낍니다.
더 나은 "레일 방식"이 있습니까?
나는 여전히 잘못된 레코드를 정리하는 방법을 궁금해합니다. 클라이언트가 유효하지 않아'client.destroy'는 작동하지 않습니다. 이것을 해결하기 위해 여분의 필드 'dupe'를 추가하고 고유성 검증을 'validates_uniqueness_of : lastname, scope : [: firstname, : dupe]'로 변경했습니다. 'client.dupe = true; client.destroy'는 (자연스럽게) 작업했습니다. –
일괄 처리를 반복하려면 Client.find_each를 사용하십시오. –