7

有没有更快的方法来销毁所有轨道?

我问这个是因为 rails 对每条记录进行单独的删除 sql 查询。

例如,在搜索 4 条记录时调用 destroy all 将运行 4 个 delete sql 命令。

Blerg.where("created_at > yesterday").destroy_all (4 results)

然后调用...</p>

DELETE FROM "blergs" WHERE "blergs"."id" = $1  [["id", 197782]]

4次。

有没有办法把它变成一个 sql 命令?

4

2 回答 2

11

你总是可以打电话

Blerg.where("created_at > yesterday").delete_all

这只给出一个查询:

DELETE FROM "blergs" WHERE (created_at > '2012-11-26 16:27:56.678872')

请注意,这不会对要删除的对象调用任何回调。

于 2012-11-27T16:25:55.930 回答
3

你也可以做

Blerg.delete_all("created_at > '2012-11-01 00:00:00'")

哪个更简洁。它执行一条 SQL 语句。

于 2012-11-27T17:16:36.190 回答