2012-01-13 2 views
1

나는 Rails 2.3.11에서 대량 삽입을 수행하고 무시할 구문이 무엇인지 궁금해하기 위해 ar-extensions gem을 사용하고 있습니다. 방금하면 :ar 확장자가있는 레일 벌크 삽입 : IGNORE 삽입 방법?

User.import friends 

그러면 중복되는 키 오류가 발생합니다. 나는 이것을 시도 할 수있다 :

User.import friends, :on_duplicate_key_update => [:first_name] 

그러나 내가 실제로 그것을 업데이트하고 싶지 않다면 단지 INSERT IGNORE를하는 어떤 방법이 있어야한다. 아무도 이것에 대한 적절한 구문을 알고 있습니까?

+0

무엇'하는 하늘의 배열을 전달하는 방법에 대한 : on_duplicate_key_update'를? :-) –

+0

실제로 죄송합니다 : on_duplicate_key_update => [: first_name]이 (가) "ArgumentError : Invalid arguments!"오류를 발생시킵니다. 그래서 이것은 어떤 경우 든 유효한 해결책이 아닙니다 – galarant

+0

이것은 완전한 대답보다 해결 방법이 더 많습니다 만 이미 테이블에 이미있는 가져 오기 배열에 모델 개체를 추가하지 않아도이 작업을 수행 할 수 있습니다. 위의 예와 관련해서는 다음과 같이 수행 할 수 있습니다. 의 우리가 친구를 추가하는 것은 하나 하나의 개체로 친구를 채우기되어 있다고 가정 해 봅시다 : 친구 + = [친구] 우리는 단순히 수행하여 번잡 한 개체를 추가 피할 수 : 친구 + = [친구] User.find_by_id (친구 경우!. id) 이렇게하면 중복 키 문제가 해결됩니다. – galarant

답변

0

이것은 전체 답변보다 더 많은 해결 방법이지만, 테이블에 이미있는 가져 오기 배열에 모델 개체를 추가하지 않아도이 작업을 수행 할 수 있습니다. 위의 예와 관련해서는 다음과 같이 수행 할 수 있습니다. 의 우리가 객체 친구를 추가하여 친구를 채우고있다 가정 해 봅시다 하나 하나

friends += [friend] 

우리는 단순히 수행하여 번잡 한 개체를 추가 피할 수 있습니다 :

friends += [friend] if !User.find_by_id(friend.id)