# frozen_string_literal: true # Implementa valores por sí o por no class MetadataBoolean < MetadataTemplate def default_value false end # Los checkboxes son especiales porque la especificación de HTML # indica que no se envían aquellos checkboxes con valores vacíos, con # lo que nunca sabemos cuándo se los está deshabilitando. Rails # subsana esto enviando un valor vacío bajo el mismo nombre # (generalmente '0'). # # En este caso, queremos priorizar el dato enviado por le usuarie # antes que el generado internamente. def value return false if self[:value] == '0' return self[:value] unless self[:value].nil? document.data.fetch(name.to_s, default_value) end def save self[:value] = !%w[0 false].include?(self[:value]) true end end