2014-05-14 5 views
0

프로젝트 관리 앱을 디자인 중이며 사용자가 데이터베이스에서 기존 프로젝트를 '포크'할 수있게하고 싶습니다. 예를 들어 @user1은 프로젝트를 만들고 @user2은 해당 프로젝트를 수정할 수 있으므로 @user2의 'fork'으로 옵션을 클릭합니다.
그럴 경우 기존 프로젝트는 @user2에 대해 거의 복제됩니다. 단, 해당 프로젝트의 내용을 수정할 수 있습니다.기존 사용자가 프로젝트 관리 도구에서 프로젝트를 '포크'로 만들 수 있습니다.

중첩 된 속성이 트릭을 수행 할 수도 있다고 생각했지만 올바른 방법은 아닌 것 같습니다.

제안 사항?

+0

사용자 2가 별도의 독립적 인 사본을 갖고 싶다는 의미입니까? (그런 다음 "포크"는 다른 사람의 프로젝트를 기반으로 신속하게 시작하는 방법 일뿐입니다.) 또는 user2가 자신의 프로젝트로 이것을보고 싶지만 한 사용자의 변경 사항을 모두 볼 수 있습니까? – awendt

답변

0

ActiveRecord::Core#dup 방법을 사용해야합니다. 페이지에서
:

속아 객체에는 ID가 지정되어 있지 않고 새 레코드로 취급되어 있습니다. 이것은 연관성이 아니라 객체의 속성 만 복사하기 때문에 "얕은"복사본이라는 점에 유의하십시오. "딥 (deep)"복사본의 범위는 애플리케이션에 따라 다르므로 애플리케이션에 따라 필요에 따라 구현해야합니다. dup 메소드는 timestamps (created | updated) _ (at | on)을 보존하지 않습니다. id, created_at, updated_at 필드 - 짧은에서

, @project.dup제외 @project 같은 모든 매개 변수를 사용하여 새 Project 객체를 구축 할 것입니다. @user2은이 새로 빌드 된 객체에서 수정을 수행 한 다음 save입니다. 이 기능은 fork 기능을 모방합니다.

관련 문제