Hash[]
возвращает false, если запрошенный ключ отсутствует, поэтому
if params[key]
вернет false
, если params
не имеет key
And-ed условия короткого замыкания (т.е. прекратить оценку, когда первое условие ложно), поэтому следующее будет работать, даже если key
отсутствует:
if params[key] && params[key][sub_key]