2012-02-08 4 views
0

이것은 실제 헤어 풀러입니다. 두 개의 다른 항목을 조회 할 필요가있는 junction 테이블이 있는데 값이없는 경우 접합 테이블을 갱신하십시오.레일 ActiveRecord 관계 내의 값 비교

master_actors = [#<Actor2role actorId: 13176, dogTag: 45917, roleId: 1, position: 3>, #<Actor2role actorId: 65471, dogTag: 45917, roleId: 291075, position: 1>] 

slave_actors = [#<Actor2role actorId: 11123, dogTag: 5384, roleId: 44, position: 5>, #<Actor2role actorId: 65471, dogTag: 5384, roleId: 291075, position: 0>, #<Actor2role actorId: 66652, dogTag: 5384, roleId: 291073, position: 2>] 

내가 그 기록의 각각의 내용을 비교해야하고 master_actors에 존재하지 slave_actors 항목이있는 경우 내가 그들을 삽입해야합니다

는 기본적으로 나는이 있습니다.

내가 알 수없는 것은이 두 activeRecord 관계 객체의 내용을 비교하는 방법입니다. .include?과 같은 일반 배열 방법은 작동하지 않습니다. master_actors.attributes == slave_actors.attributes도 속성 메서드가 activeRecord 관계에 대해 존재하지 않는다는 오류가 발생하기 때문에 마찬가지입니다.

기본적으로 나는 정말 엉망입니다.

도움을 주시면 감사하겠습니다.

답변

1

교차로 (ary1 & ary2)가 비어 있는지 확인해 보셨습니까?

편집는 : slave_actors에서 결석이 될 수 master_actors의 요소가 있기 때문에, 아래의 설명에서 언급 한 바와 같이, 차이 (ary1 - ary2)는 (방법 master_actors.to_a.should의 EQ에 대한 정답

+0

나는 교차로에 익숙하지 않다 (구글에서 지금 워드 프로세서를 찾는다). 예제를 제공 할 정도로 친절하십니까? – kakubei

+0

제가 지금보고있는 해결책은 두 가지의 차이점에서 새로운 배열을 만드는 것입니다. 즉, 슬레이브에 대한 항목을 삭제하고 마스터 ID로 새 배열의 값을 삽입하는 것입니다. – kakubei

+0

수학적으로 말해서 두 세트의 교차는 두 기본 세트에있는 요소만으로 구성된 세트입니다. 따라서,'slave_actors'에서 빠진'master_actors'에 요소가 존재할 수 없다는 사실을 당연한 생각으로 생각하면, 저는 이것이 속임수를 써야한다고 생각합니다. 자세한 내용은 [Array # &] (http://ruby-doc.org/core-1.9.3/Array.html#method-i-26)를 참조하십시오. – ksol

0

했다 slave_actors.to_a) - 나를 위해 일한다