2009-04-05 3 views
0

ActiveRecord 모델의 10 인스턴스와 모든 연관을 메모리에 저장하고 작업하고, 메모리 내 개체를 업데이트 한 다음, 완료하면, 하나를 선택하여 데이터베이스의 원본을 다시 쓰십시오.ActiveRecord 개체 및 연결 캐싱

  1. 어떻게해야합니까 깊은 클론 (즉 .clone뿐만 아니라 오른쪽으로 협회 트리의 맨 아래에있는 모든 연결을 복제)? 지금까지 모델에 직접 메서드를 작성해야한다고 가정했습니다.

  2. 복제 된 인스턴스가 준비 될 때까지 데이터베이스에 다시 쓸 수 없도록하려면 어떻게해야합니까?

내가하고 싶은 가능한 경우 : - : 다른

한 모델의 ID를 일치 통해 내 주요 단체 중 하나가 has_many 그대로

  1. 현재의 모든 ID를 유지

  2. 은 여전히 ​​각 복제본을 데이터베이스에있는 것처럼 처리 할 수 ​​있습니다 (예 : .find_by_id 등)

어쩌면 문구에? , 당신은이 방법을 저장 호출하면) 당신이 뭘 하려는지의

답변

1

100 % 확실 ...

모델는 데이터베이스에 저장됩니다. 기존 모델에서 save를 호출하면 변경된 데이터로 데이터베이스가 업데이트됩니다. 연결도 저장 될 수 있지만 연결 유형에 따라 다르며 대부분의 경우이 모델에서도 save를 호출해야 할 수 있습니다.

0

Doh! 때로는 뻔한 대답을보기 전에 어리석은 질문을하는 것이 필요합니다.

내 문제는 관련된 객체를 변경해야한다는 것이었고 나중에 해당 메모리 내 객체를 사용할 때 표시되지 않아 저장해야한다고 생각했습니다. 그러나, 당신 말이 맞아. 실제로 일어나는 모든 것은 그것들을 참조하는 변수가 범위를 벗어 났으므로 대신 데이터베이스 내에있는 변수에 액세스하고있었습니다.

나는 내 코드로 돌아가서 이것이 사실인지 확인할 것입니다. 그것은 끝났다 http://github.com/DefV/deep_cloning

:

내가 DefV의 깊은 복제 플러그인을 사용하여 깊은 복제 문제를 해결 한

0

는 "하지만 깊은 복제"에 대한 내 질문에 ... 대답하지 않는, 그런 말로 미루어 당신이 당신의 관계를 매우 조심해야 할 필요가 있음을 알았지 만 지금까지 필요한 모든 것. 내 테스트는 다행스럽게도이 문제를 문제로 보았고 현재 그 문제를 해결하고 있습니다. 나는이 문제를 해결하려고 할 때이 게시물을 발견했다. :)

플러그인을 확인해보십시오. 매우 편리합니다.

+0

감사합니다. 내가 그동안 늦게 반응에 대해 사과 했으니 까. –