2012-01-31 88 views
1

軌道是否有辦法從模型實例中插入記錄?像User.create(user)從對象插入記錄

+1

可能與http://stackoverflow.com/questions/60033/what-is-the-easiest-way-to-duplicate-an-activerecord複製 - 記錄 – Baldrick 2012-01-31 16:22:32

回答

1

假設userUser的實例,您只需使用user.save即可。 AR知道是否插入或更新。

UPDATE(見註釋)

這似乎是一個創紀錄的問題的克隆,所以答案是使用dup方法來創建對象的淺克隆。

+0

這不符合我的預期。出於測試目的,我嘗試了以下內容:u = User.find(1); u.id = nil; u.save並且它試圖更新updated_at,其中users.id是NULL,這是有道理的。我沒有錯嗎?我從User中選擇這個對象,所以它會一直嘗試更新它,當我想將它作爲新記錄插入時。 – 2012-01-31 16:14:09

+0

你爲什麼把id設置爲零?您通常會使用'user = User.new()'創建一個新實例,然後調用'user.save'。通過執行'find',您可以選擇數據庫中的現有記錄,然後將id設置爲nil,調用'save'將嘗試保存'id' = nil的位置。哪個會炸燬。你是否想從數據庫中克隆一條記錄並將其保存爲新記錄? – Bangline 2012-01-31 16:21:15

+1

應該說如果你想克隆使用'dup'來創建re4cord的一個副本而不保存它,(Rails 3+) – Bangline 2012-01-31 16:23:28