给定一个模型 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 方法。


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!