给定一个模型 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
阅读有关 pluck
和 ids
的更多信息 here和 here分别。
谢谢Stefan为我指出 ids
方法。