我有一個筆記模型,帶有一個note_type字段。如果類型爲「short_note」,那麼如何編寫一個將從數據庫中刪除Note記錄的遷移?如何編寫將從我的數據庫中刪除某些記錄的遷移?
回答
代碼本身很簡單。
Note.delete_all :type => 'short_note'
(如果有票據銷燬回調,你需要運行destroy_all
來代替。這是慢,因爲他們刪除一個接一個,但有時會產生更好的數據完整性。)
然而,我想你比上升的遷移更擔心下移遷。它本質上是一個不可逆轉的轉變。這個問題的答案是,你的遷移應該引起一個異常。
但是,無論何時寫入不可逆遷移,重要的是要考慮爲什麼要這樣做。根據您的情況,在部署到生產環境時,在控制檯中運行該特定命令,而不是將應用程序的定義轉換爲部分應用程序更合適。
def self.up
execute "DELETE FROM notes WHERE note_type = 'short_note'"
end
:-P
只是開個玩笑。我敢肯定,你可以這樣做:
Note.delete_all :note_type => 'short_note'
在self.up:
Note.delete_all("type = 'short_note'");
或使用destroy_all它將調用記錄的銷燬方法和回調(before_destroy和after_destroy):
Note.destroy_all("type = 'short_note'");
我非常喜歡在可能的情況下使用散列和/或數組形式,並且只有在必須直接寫SQL時才使用字符串形式。這樣,沒有人會試圖將它重構爲SQL注入的形式,以防他們想要刪除參數化類型。 – 2010-10-10 01:31:21
如果值爲空,我們將如何寫入。 '「type = NULL」'? – 2013-11-06 10:39:20
- 1. 某些記錄從我的sql數據庫中自動刪除
- 2. 如何我暫時從我的數據庫中刪除記錄?
- 3. 從sqlite3數據庫刪除某些行
- 4. Vaadin從數據庫中刪除記錄
- 5. 從數據庫中刪除記錄
- 6. 從數據庫中刪除記錄
- 7. 從數據庫中刪除記錄
- 8. 從數據庫中刪除記錄
- 9. 從MySQL數據庫中刪除記錄
- 10. 如何從SSIS中的目標數據庫中刪除記錄
- 11. 如何從數據庫記錄中刪除¶(pilcrow)標記
- 12. 刪除數據庫中的記錄cakephp
- 13. 刪除數據庫中的記錄
- 14. CakePHP的3刪除行從數據庫中使用遷移
- 15. 從gridview刪除記錄,但不是從數據庫中刪除記錄
- 16. 如何從onlongitemclick函數中刪除數據庫記錄
- 17. 從sqlite數據庫刪除記錄
- 18. 刪除聊天記錄從數據庫
- 19. 從MDF數據庫刪除記錄
- 20. 從django遷移中排除數據庫
- 21. 我是否通過保存某些數據來刪除表中的記錄?
- 22. 如何遷移我的heroku數據庫?
- 23. 如何刪除CouchDB中的數據庫中的所有記錄?
- 24. 如何從具有複合鍵的數據庫刪除記錄
- 25. 如何從VB永久刪除數據庫的記錄
- 26. 從Access數據庫中刪除記錄,刪除時出錯
- 27. 從git歷史記錄中刪除文件的某些內容
- 28. 如何從JNativeHook庫中刪除記錄數據
- 29. 記錄從數據庫中刪除如何更新UI
- 30. 如何通過LSXODBC從數據庫中刪除記錄
不,不要指定':conditions'鍵! 'delete_all'方法只需要條件,而不是一般的'find'規範。 – 2010-10-10 01:32:10
@Chris Jester-Young:很好:) :)修正。 – Matchu 2010-10-10 01:33:35