簡體   English   中英

從 rails 中的某個 id 開始刪除所有記錄?

[英]Remove all records from a certain id onwards in rails?

不小心忘了轉計划任務,在表格里加了不該有的行。

我知道我希望從中刪除行的 ID。 但是你是怎么做到的呢?

我試過了

Datum.where("id > 650").delete
ArgumentError (wrong number of arguments (given 0, expected 1))

Datum.where("id > 650").destroy
Traceback (most recent call last):
        1: from (irb):5
ArgumentError (wrong number of arguments (given 0, expected 1))

首先 delete_all 與 destroy_all 的簡短比較:

  • delete_all:會直接從表中刪除你的數據,而不會實例化你的ActiveRecord; 更快,但可能不保存取決於您的 model。
  • destroy_all:你的 ActiveRecord 將被實例化,你的回調、級聯刪除等將被執行。 慢一點,但保存。

如果你有一個 RecordSet,你總是必須執行 delete/destroy_all,因為 delete/destroy 方法只針對單個 ActiveRecord。

資料來源:

似乎與destroy_all

Datum.where("id > 650").destroy_all
  Datum Load (0.4ms)  SELECT "data".* FROM "data" WHERE (id > 650)
   (0.1ms)  BEGIN
  Datum Destroy (10.2ms)  DELETE FROM "data" WHERE "data"."id" = $1  [["id", 651]]
   (0.5ms)  COMMIT
   (0.1ms)  BEGIN
  Datum Destroy (0.3ms)  DELETE FROM "data" WHERE "data"."id" = $1  [["id", 652]]
   (0.3ms)  COMMIT
   (0.1ms)  BEGIN
  Datum Destroy (0.3ms)  DELETE FROM "data" WHERE "data"."id" = $1  [["id", 653]]
   (0.2ms)  COMMIT

我懷疑destroy不起作用,因為當有人打算刪除一條記錄但不小心提供了多條記錄時,它可以防止發生災難的可能性很小

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM