检查ActiveRecord是否存在多个记录?

问题描述 投票:0回答:1

当至少一个键存在时,使用#exists?会给出假肯定(即将返回true)。

MyModel.exist?(key: [:risk_score, :i_made_this_up]) # => true

我可以进行少量检查:

[:risk_score, :i_made_this_up].all? { |key| MyModel.exists?(key: key) }

但是这是一个N + 1查询,如果我要检查很多键怎么办?

ruby-on-rails ruby-on-rails-5
1个回答
0
投票

您可以从给定的键中减去可能的键,结果应为空数组:

  unknown_keys = keys - MyModel.pluck(:key)
  raise(ArgumentError, "one or more keys do not exist: #{unknown_keys.join(', ')}") unless unknown_keys.empty?
© www.soinside.com 2019 - 2024. All rights reserved.