交叉检查数组并从数据库中删除剩余的内容
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
根据评论编辑:
由于 array1
和 array2
是 id
的数组,您可以简单地将结果数组传递到 Merchant.where
子句并一起删除集合:
ids_for_delete = (array1 - array2)
Merchant.find(ids_for_delete).delete_all
旁注:Ruby 版本 1.8.7 和 1.9.2 的维护已于 2014 年 7 月 31 日结束 - 考虑更新。
我有两个数组,一个包含旧数据库的信息,一个包含新数据库的信息。我想检查旧数据库中不在新数据库中的内容,然后将其删除。
我完成了 array1 - array2 并将结果放入一个数组中,但我不确定如何将它们从数据库中删除。我尝试对其调用的任何枚举似乎 break/not 都像与 fixnum 一起使用。
在 oracle 数据库上使用 ruby 1.8.7 运行,以防在 oracle 中有更简单的方法(第一次使用 oracle,所以我不熟悉)。
如果你使用 AR ORM,你可以这样做:
(array1 - array2).each(&:destroy)
你们中的 delete_all:
(array1 - array2).delete_all
根据评论编辑:
由于 array1
和 array2
是 id
的数组,您可以简单地将结果数组传递到 Merchant.where
子句并一起删除集合:
ids_for_delete = (array1 - array2)
Merchant.find(ids_for_delete).delete_all
旁注:Ruby 版本 1.8.7 和 1.9.2 的维护已于 2014 年 7 月 31 日结束 - 考虑更新。