From 68f3839ab1f1e0f1d67002385d26c44dbd6275c8 Mon Sep 17 00:00:00 2001 From: f Date: Fri, 6 Oct 2023 11:12:02 -0300 Subject: [PATCH] fix: convertir valores en constantes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit los structs se comportan extraño, es posible declararles constantes internamente, pero luego no pueden ser llamadas desde afuera, como una clase normal. al incluirlas como modulos es posible lograr el comportamiento esperado de una clase. --- app/models/metadata_boolean.rb | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/app/models/metadata_boolean.rb b/app/models/metadata_boolean.rb index 9932c6fd..e196ad30 100644 --- a/app/models/metadata_boolean.rb +++ b/app/models/metadata_boolean.rb @@ -1,11 +1,17 @@ # frozen_string_literal: true +module MetadataBooleanConstants + TRUE_VALUES = %w[1 on true].freeze +end + # Implementa valores por sí o por no # # Esto es increíblemente difícil de lograr que salga bien! class MetadataBoolean < MetadataTemplate - # El valor por defecto es una versión booleana de lo que diga (o no - # diga) el esquema + include MetadataBooleanConstants + + # Devolver el valor desde el esquema y si no existe, por defecto es + # false # # @return [Boolean] def default_value @@ -28,28 +34,23 @@ class MetadataBoolean < MetadataTemplate # * '1' => true # * false # * true + # + # @todo Esto debería estar definido en sanitize o save def value case self[:value] when NilClass document.data.fetch(name.to_s, default_value) when String - true_values.include? self[:value] + TRUE_VALUES.include? self[:value] else self[:value] end end # Siempre guardar el valor de este campo a menos que sea nulo + # + # @return [Boolean] def empty? value.nil? end - - private - - # Los valores que evalúan a verdadero - # - # XXX: memoizamos porque Struct no puede declarar constantes. - def true_values - @true_values ||= %w[1 on true].freeze - end end