Jak zapamiętać metodę, która może zwracać wartość true, false lub nil w Ruby?

Oczywiście||= nie zadziała

def x?
  @x_query ||= expensive_way_to_calculate_x
end

bo jeśli się okażefalse lubnil, następnieexpensive_way_to_calculate_x w kółko zacznie biec.

Obecnie najlepszym sposobem, jaki znam, jest wprowadzenie wartości doArray:

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

Czy jest to bardziej konwencjonalny lub skuteczny sposób?

AKTUALIZACJA Uświadomiłem sobie, że chcę zapamiętaćnil opróczfalse - To wszystko sięga wsteczhttps://rails.lighthouseapp.com/projects/8994/tickets/1830-railscachefetch-does-not-work-with-false-boolean-as-cached-value - przepraszamAndrew Marshall który udzielił całkowicie poprawnej odpowiedzi.

questionAnswers(2)

yourAnswerToTheQuestion