[英]Copy model instances in Rails
我有一個模型Foo
與屬性id, name, location
。 我有一個Foo
的例子:
f1 = Foo.new
f1.name = "Bar"
f1.location = "Foo York"
f1.save
我想復制f1
並從該副本創建另一個Foo
模型實例,但我不希望f1.id
繼續轉移到f2.id
(我不想明確指定它,我想要db處理它,因為它應該)。
除了手動復制每個屬性之外,還有一種簡單的方法嗎? 任何內置函數或寫一個是最好的路線?
謝謝
根據以下問題,如果您使用Rails> = 3.1,則可以使用object.dup
:
這就是ActiveRecord :: Base#clone方法的用途:
@bar = @foo.clone
@bar.save
一個錯誤的方法是:
f2 = Foo.new( f1.attributes ) # wrong!
f2.save # wrong!
或者在一行中,但仍然是錯誤的 :
f2 = Foo.create( f1.attributes ) # wrong!
查看評論了解詳情
您可以在rails中制作重復記錄
@bar = @foo.dup
@bar.save!
您可以使用rails提供的內置attributes
方法。 例如
f2 = Foo.new(f1.attributes)
要么
f2 = Foo.new
f2.attributes = f1.attributes
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.