检查存在多个参数

时间:2016-01-13 12:16:08

标签: ruby-on-rails ruby

我需要检查多个参数的存在。 目前我所写的是

if params[:p1].present? && params[:p2].present? && params[:p3].present?
  # Do something
end

有更有效的方法吗?

2 个答案:

答案 0 :(得分:15)

您可以使用Enumerable.all?方法:

%i( p1 p2 p3 ).all? { |key| params[key].present? }

另一种选择,如果您需要值,则可以获取它们并检查其存在。

params.values_at(*%i( p1 p2 p3 )).all?(&:present?)

params.values_at(:p1, :p2, :p3).all?(&:present?)

答案 1 :(得分:0)

在Rails中,您可以使用Hash#slice来确定散列中是否存在所需的键。

# Below require is needed only in stand-alone program for testing purposes
require 'active_support/core_ext/hash'

params = {:p1=>"1", :p2=>"2", :p3 => "3", :p4=>"4"}    
mandatory_keys = [:p1, :p2, :p3]

if (params.slice(*mandatory_keys).values.all?(&:present?)
    puts "All mandatory params present"
else
    puts "Mandatory params missing"
end
相关问题