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.