Bạn cũng có thể làm như sau:
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Tôi có xu hướng sử dụng giải pháp trên khi tôi muốn kiểm tra nhiều hơn một hoặc hai params.
.values_at trả về và mảng với nil ở vị trí của bất kỳ khóa param không xác định nào. I E:
some_hash = {x:3, y:5}
some_hash.values_at(:x, :random, :y}
sẽ trả lại như sau:
[3,nil,5]
.includes? (nil) sau đó kiểm tra mảng cho bất kỳ giá trị nil nào. Nó sẽ trả về true là mảng bao gồm nil.
Trong một số trường hợp, bạn cũng có thể muốn kiểm tra xem params không chứa và chuỗi rỗng trên giá trị sai.
Bạn có thể xử lý các giá trị đó bằng cách thêm mã sau vào bên trên câu lệnh trừ khi.
params.delete_if{|key,value| value.blank?}
tất cả cùng nhau trông như thế này:
params.delete_if{|key,value| value.blank?}
unless params.values_at(:one, :two, :three, :four).includes?(nil)
... excute code ..
end
Điều quan trọng cần lưu ý là xóa_if sẽ sửa đổi hàm băm / param của bạn, vì vậy hãy thận trọng khi sử dụng.
Giải pháp trên rõ ràng cần thêm một chút công việc để thiết lập nhưng đáng giá nếu bạn đang kiểm tra nhiều hơn thì chỉ cần một hoặc hai thông số.
params
là một phương thức điều khiển Rails (điều đó xảy ra để trả về HashWithIndifferentAccess), đó là về Rails.