交叉检查数组并从数据库中删除剩余的内容

Crosscheck arrays and delete from DB what is left over

我有两个数组,一个包含旧数据库的信息,一个包含新数据库的信息。我想检查旧数据库中不在新数据库中的内容,然后将其删除。

我完成了 array1 - array2 并将结果放入一个数组中,但我不确定如何将它们从数据库中删除。我尝试对其调用的任何枚举似乎 break/not 都像与 fixnum 一起使用。

在 oracle 数据库上使用 ruby 1.8.7 运行,以防在 oracle 中有更简单的方法(第一次使用 oracle,所以我不熟悉)。

如果你使用 AR ORM,你可以这样做:

(array1 - array2).each(&:destroy)

你们中的 delete_all:

(array1 - array2).delete_all

根据评论编辑:

由于 array1array2id 的数组,您可以简单地将结果数组传递到 Merchant.where 子句并一起删除集合:

ids_for_delete = (array1 - array2)
Merchant.find(ids_for_delete).delete_all

旁注:Ruby 版本 1.8.7 和 1.9.2 的维护已于 2014 年 7 月 31 日结束 - 考虑更新。