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