¿Cómo puedo memorizar un método que puede devolver verdadero, falso o nulo en Ruby?

Obviamente||= no funcionará

def x?
  @x_query ||= expensive_way_to_calculate_x
end

Porque si resulta serfalse onil, entoncesexpensive_way_to_calculate_x se correrá una y otra vez.

Actualmente, la mejor manera que conozco es poner el valor en unaArray:

def x?
  return @x_query.first if @x_query.is_a?(Array)
  @x_query = [expensive_way_to_calculate_x]
  @x_query.first
end

¿Hay una forma más convencional o eficiente de hacer esto?

ACTUALIZAR Me di cuenta de que quería memorizarnil además defalse - esto va todo el camino de regreso ahttps://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value - mis disculpas aAndrew Marshall quien dio una respuesta completamente correcta.