当至少一个键存在时,使用#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查询,如果我要检查很多键怎么办?
您可以从给定的键中减去可能的键,结果应为空数组:
unknown_keys = keys - MyModel.pluck(:key)
raise(ArgumentError, "one or more keys do not exist: #{unknown_keys.join(', ')}") unless unknown_keys.empty?