2
我需要在Rails中複製記錄,然後在創建記錄之前將其呈現爲新表單。Rails中的重複記錄並使用其關聯填充新表單
一切正常以下this有用的答案,但我需要填充has_many_belongs_to_many協會的記錄,以及
方法DUP()讓我重複的記錄,但它的一切關聯,我也看到了有一個寶石Amoeba,可以做一個非常靈活的深度克隆,但我不知道是否有一個更簡單的解決方案,而不使用寶石
我需要在Rails中複製記錄,然後在創建記錄之前將其呈現爲新表單。Rails中的重複記錄並使用其關聯填充新表單
一切正常以下this有用的答案,但我需要填充has_many_belongs_to_many協會的記錄,以及
方法DUP()讓我重複的記錄,但它的一切關聯,我也看到了有一個寶石Amoeba,可以做一個非常靈活的深度克隆,但我不知道是否有一個更簡單的解決方案,而不使用寶石
Rails沒有內置的深度克隆。在Rails 2.3.x中,您有用於克隆活動記錄屬性的clone
。在Rails> 3中,他們將此方法重命名爲dup
,其文檔現在缺失。但是,它與clone
相同,其文檔如下所示。
請注意,這是一個「淺」克隆:它僅複製對象的屬性 而不是它的關聯。 「深」克隆的程度是 特定於應用程序,因此根據其需要留給應用程序執行到 。
所以,如果你想克隆關聯,你是你自己的。在我的項目中,我爲此使用了一種名爲replicate
的方法。
class User < ActiveRecord::Base
# ...
def replicate
replica = dup
comments.each do |comment|
replica.comments << comment.dup
end
replica
end
end
沿着這些線條的東西。
不應該是replica.comments << comment.dup? – Toni
@經驗正確,如果你想要複製一切。在我的情況下,我克隆了用戶並將相關數據移動到新用戶。不是100%確定OP想要什麼,但是我按照您的建議進行了編輯,因此對於該主題看起來更合適。 –