检查 Rails 中是否不存在记录(来自 id 数组)?

新手上路,请多包涵

我可以这样做来检查记录是否存在(比如 id “1” 存在,但 “2” 和 “3” 不存在):

 Model.exists?(:id => [1, 2, 3]) #=> true

我该怎么做相反的事情,所以:

 Model.not_exists?(:id => [1, 2, 3]) #=> true

原文由 Lance 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 507
2 个回答

编辑:请不要使用这种方法。即使它有效,它也不是最佳的,因为它加载所有记录而不是只测试它们的存在。 是一种更好的方法。


如果你只需要通过ID搜索记录你可以试试这个

class Model
  def self.not_exists?(ids)
    self.find(ids)
    false
  rescue
    true
  end
end

如果任何 ID 不存在, find 方法将引发 ActiveRecord::RecordNotFound 异常,我们只需捕获并返回 true。

原文由 afgomez 发布,翻译遵循 CC BY-SA 4.0 许可协议

为确保所有 id 都存在,不只是以下一项无需救援

ids = [1,2,3]
Model.where(id: ids).count != ids.length

存在吗?如果任何 id 匹配,方法将返回 true。以上将确保所有ID都存在。

原文由 surgentt 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进