检查存在多个参数

pra*_*esh 6 ruby ruby-on-rails

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

if params[:p1].present? && params[:p2].present? && params[:p3].present?
  # Do something
end
Run Code Online (Sandbox Code Playgroud)

有没有更有效的方法来做到这一点?

Sim*_*tti 15

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

%i( p1 p2 p3 ).all? { |key| params[key].present? }
Run Code Online (Sandbox Code Playgroud)

另一种选择,如果你需要值,它可以获取它们并检查存在.

params.values_at(*%i( p1 p2 p3 )).all?(&:present?)
Run Code Online (Sandbox Code Playgroud)

要么

params.values_at(:p1, :p2, :p3).all?(&:present?)
Run Code Online (Sandbox Code Playgroud)