sql - 如何过滤数据库中不存在的模型列的值?

标签 sql ruby-on-rails ruby performance activerecord

给定一个模型 ID 数组:

ids = [1, 2, 3]

如何获取数据库中尚不存在的 ID 数组?我能做到:

ids.reject { |id| Model.exists?(id: id) }

但我不想为每个 ID 进行单独的数据库查询。在单个数据库查询中获取不存在的 ID 的方法是什么?

最佳答案

如果您使用的是 rails 4 或更高版本,您可以像下面给出的那样使用

ids = [1, 2, 3]
existing_ids = Model.where(id: ids).ids
ids - existing_ids

如果你使用的是rails 3,你需要

ids = [1, 2, 3]
existing_ids = Model.where(id: ids).pluck(:id)
ids - existing_ids

阅读有关 pluckids 的更多信息 herehere分别。

谢谢Stefan为我指出 ids 方法。

关于sql - 如何过滤数据库中不存在的模型列的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37564186/

相关文章:

javascript - Ajax 调用不适用于动态添加的内容

sql - 为什么比较 varchar/number 有效

mysql - DB mysql sql 查询 WHERE EXISTS

sql - Excel 聚合函数

ruby-on-rails - 有没有办法为 Rails 应用程序自动重新加载初始化程序?

mysql - Rails SQL 查询,将 id 数组传递给 sql WHERE ... IN 子句

ruby-on-rails - Rails 中的 MigrationProxy 是什么?

ruby-on-rails - Rails Devise - 多种模型

mysql - 如何在具有相应键的情况下同时向多个表添加信息?

ruby - 如何使 Ruby 1.9 成为 Ubuntu 上的默认 Ruby?