0
我設計一個項目管理應用程序,我希望我的用戶能夠「叉」在數據庫中現有項目的項目。例如,@user1
將創建一個項目,並@user2
可能要修改的項目,所以@user2
會點擊一個選項「叉」它。
發生這種情況時,除了他/她能夠修改它的內容之外,現有項目將幾乎與@user2
重複。允許現有用戶「叉」的項目管理工具
我在想嵌套屬性可能會訣竅,但我不認爲這是正確的方法來解決這個問題。
有什麼建議嗎?
我設計一個項目管理應用程序,我希望我的用戶能夠「叉」在數據庫中現有項目的項目。例如,@user1
將創建一個項目,並@user2
可能要修改的項目,所以@user2
會點擊一個選項「叉」它。
發生這種情況時,除了他/她能夠修改它的內容之外,現有項目將幾乎與@user2
重複。允許現有用戶「叉」的項目管理工具
我在想嵌套屬性可能會訣竅,但我不認爲這是正確的方法來解決這個問題。
有什麼建議嗎?
您應該使用ActiveRecord::Core#dup
方法。
來自頁面:
Duped對象沒有標識,並被視爲新記錄。請注意,這是一個「淺」副本,因爲它僅複製對象的屬性,而不復制其關聯。 「深層」複製的範圍是特定於應用程序的,因此應由應用程序根據需要執行。 dup方法不保存時間戳(創建|更新)_(at | on)。
總之,@project.dup
將建立新Project
物體一樣,只是@project
所有參數 - id
,created_at
,updated_at
領域。 @user2
可以對這個新建對象做修改,然後save
它。這模仿了fork
功能。
你的意思是你想讓user2擁有一個單獨的獨立副本嗎? (然後,「fork」只是基於其他人的項目快速入門的一種方式。)或者您希望user2將此視爲她自己的項目,但所有用戶都會看到一個用戶的更改嗎? – awendt