Of course hash wins with no doubts but here is a short way to convert array into hash for checking values:

class Array
  def to_hash val = true
    Hash[*self.flat_map { |el| [el, val] }]
  end
end

This post in inspired by post about #flat_map

Here is the benchmark:

require 'benchmark'
require 'benchmark/ips'

class Array
  def to_hash val = true
    Hash[*self.flat_map { |el| [el, val] }]
  end
end

SIZE = 10000

Benchmark.ips do |r|  
  sample_array = (0..SIZE).to_a.shuffle
  sample_hash = sample_array.to_hash

  r.report("Array#include?") do
    sample_array.include? rand(SIZE)
  end

  r.report("Hash#has_key?") do
    sample_hash.has_key? rand(SIZE)
  end
end

# Calculating -------------------------------------
#       Array#include?       624 i/100ms
#        Hash#has_key?     66205 i/100ms
# -------------------------------------------------
#       Array#include?     6176.3 (±4.4%) i/s -      31200 in   5.062547s
#        Hash#has_key?  2294560.6 (±7.6%) i/s -   11387260 in   4.997186s

#ruby