2017-10-05 115 views
0

我有一個端點,它將獲取與我的模型對應的對象列表。我想把這個集合當作整個Model的表,並且在每次調用Post時自動刪除並重新填充它。除了對列表中的每個元素執行Model.delete_all然後Model.create之外,還有其他方法可以執行此操作嗎?如果它很重要,我們在ActiveRecord中使用MySQL和附帶的適配器。完全覆蓋Rails中的集合ActiveRecord

+0

重新填充這是在同一個表中刪除相同的數據? – s1mpl3

+0

新數據集,覆蓋舊的數據集。 –

+0

只需更新收集記錄。 –

回答

1

我不確定這種行爲的用例是什麼,所以我不會試圖提供一個關於算法決策的建議(儘管乍一看,這聽起來像是一個奇怪的決定,和重新填充)。無論如何,假設你已經計劃好了,並決定你真的要放棄並重新填充,那麼delete_all然後create應該做的伎倆。

您可以create在同一時間多個對象(或者你可以看看的批量導入寶石,使這一進程更快一點。[1]你應該記住

一件事是保持整個代碼在一個事務中,這樣的情況下,覆育失敗,你不會失去所有的數據:

ModelName.transaction do 
    ModelName.delete_all 
    ModelName.import [:col1, :col2], new_records 
end 

[1] https://github.com/zdennis/activerecord-import