Kri*_*ris 5 ruby-on-rails ruby-on-rails-5
当至少有一个键存在时,使用#exists?会产生误报(即返回 true)。
MyModel.exist?(key: [:risk_score, :i_made_this_up]) # => true
Run Code Online (Sandbox Code Playgroud)
对于少量检查,我可以这样做:
[:risk_score, :i_made_this_up].all? { |key| MyModel.exists?(key: key) }
Run Code Online (Sandbox Code Playgroud)
但这是一个N+1查询,如果我有很多键要检查怎么办?
您可以从给定的键中减去可能的键,结果应该是一个空数组:
unknown_keys = keys - MyModel.pluck(:key)
raise(ArgumentError, "one or more keys do not exist: #{unknown_keys.join(', ')}") unless unknown_keys.empty?
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1762 次 |
| 最近记录: |