0
고유 필드를 업데이트하지 않으므로 속성을 업데이트 할 수없는 이유는 무엇입니까?고유 한 현재 유효성 검사를 생성 또는 갱신하는 방법
urlmd5 둘 다 고유성 검증이 URL :
validates :url, presence: true, uniqueness: true
validates :urlmd5, presence: true, uniqueness: true
이 작품 :
ParserUrl.where(urlmd5: p[:urlmd5]).first_or_initialize.update_attributes!(
user_id: item.user_id, parser_id: item.parser_id
)
이이 작품을하지 않습니다
ParserUrl.where(url: p[:url], urlmd5:p[:urlmd5]).first_or_initialize.update_attributes!(
user_id: item.user_id, parser_id: item.parser_id
)
I got error 'unable to update existing record'...
이 first_or_initialize.update_attributes입니다! 이걸 처리하는 올바른 방법?
전체 오류를 정확하게 표시 할 수 있습니까? 또한이 문맥에서 정확히'p'는 무엇입니까? – Glyoko
나는 url 또는 p [: urlmd5]의 값이 이미 있지만 urlmd5의 값은 모두 p [: url] 인 레코드를 가지고 있다고 생각합니다. 그래서 first_or_initialize는 둘의 조합을 찾지 못하기 때문에 두 가지 모두로 레코드를 초기화하지만 고유성 제약 조건은 필드 중 하나에 계속 적용됩니다. – SteveTurczyn
두 필드를 모두 결합한 고유성을 원할 수 있습니까? 유효성 검사를 변경해야합니다. 'validates : urlmd5, 존재감 : true, 유일성 : {scope : : url} '그리고 반대의 경우도 마찬가지입니다. – SteveTurczyn