2013-09-25 8 views
2

해결하기 위해 노력하고있는 문제는 바로 부모와 자식 사이의 순환 참조를 막는 것뿐 아니라 새 자식이 레코드 계층 구조의 어딘가에 이미 부모로 사용되지 않도록하려는 것입니다.계층에서 순환 참조를 방지하려면 어떻게합니까?

self.parent = maybe_the_wrong_choice 코드를 실행하기 전에 상위 할당을 가로 채서 문제를 해결할 수 있다고 생각한 다음 변경 사항을 저장하기 전에 중요한 유효성 검사를 수행하십시오.

올바른 경로에 있습니까? 그렇다면 모델 유효성 검사 (예 : self.old_parent)에서 속성의 이전 값을 가져 와서 레코드를 저장하기 전에 새 상위 (self.parent)와 비교하는 방법은 무엇입니까?

감사합니다.

+0

예제와 함께 더 많은 정보를 제공해 주실 수 있습니까? –

답변

0

self.parent_was로 이전 상위 항목을 가져올 수 있으며 self.parent 항목에서 새 상위 항목을 가져올 수 있습니다.

+0

나를 예에 의해 내 질문에 명확히하자 – user2041343

+0

나 예에 의해 내 질문에 명확히하자 레벨 1 : 레벨 2 : A1 A2 A3 레벨 3 : A11 A12 A13 ... A31 A32 레벨 4 : A111 ... 위의 계층 구조는 A가 A32의 부모이고 A3가 A32의 부모임을 나타냅니다. - A11.parent = A3 # A11에 이미 부모가 있기 때문에 좋지 않습니다. (이름 : 'A14') - A14.parent = A1 # 이것은 A14.parent가 nil과 동일했기 때문에 좋습니다. - A31.parent = A14 # A31은 이미 좋지 않기 때문에 좋지 않습니다. 학부모가있다 (A3) - A.parent = A11 # 이미 A가 있기 때문에 좋지 않다. – user2041343

관련 문제