Ви також можете зробити наступне:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Я схильний використовувати вищезазначене рішення, коли хочу перевірити більше одного або двох парам.
.values_at повертається і масив з нулем замість будь-якого невизначеного ключа парама. тобто:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
поверне наступне:
[3,nil,5]
.includes? (nil) потім перевіряє масив на наявність будь-яких нульових значень. Він повернеться істинним, якщо масив включає нуль.
У деяких випадках ви також можете перевірити, чи парами не містять і порожній рядок на помилковому значенні.
Ви можете обробити ці значення, додавши наступний код над оператором if.
params.delete_if{|key,value| value.blank?}
все разом це виглядатиме так:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Важливо зазначити, що delete_if змінить ваші хеші / парами, тому використовуйте з обережністю.
Наведене вище рішення очевидно потребує трохи більше роботи, щоб налаштувати, але воно того варте, якщо ви перевіряєте більше, ніж лише один чи два параметри.
params
це метод контролера Rails (який трапляється повертати HashWithIndifferentAccess), мова йде про Rails.