5
0
Fork 0
mirror of https://0xacab.org/sutty/sutty synced 2024-11-24 12:06:22 +00:00
panel/app/models/metadata_date.rb
f b9ec8a6756
fix: date_field necesita strftime en el atributo
closes #17530

closes #17575

closes #17576

closes #17577

closes #17580

closes #17581

closes #17582

closes #17584

closes #17586

closes #17588

closes #17589

closes #17590
2024-10-14 13:16:30 -03:00

44 lines
1.2 KiB
Ruby

# frozen_string_literal: true
class MetadataDate < MetadataTemplate
# La fecha de hoy si no hay nada. Podemos traer un valor por defecto
# desde el esquema, siempre y cuando pueda considerarse una fecha
# válida.
#
# @return [Date,nil]
def default_value
if (dv = super.presence)
begin
Date.parse(dv)
# XXX: Notificar para que sepamos que el esquema no es válido.
# TODO: Validar el valor por defecto en sutty-schema-validator.
rescue Date::Error => e
ExceptionNotifier.notify_exception(e, data: { site: site.name, post: post.id, name:, type: })
nil
end
end
end
# Delegar el formato al valor, para uso dentro de date_field()
#
# @param format [String]
# @return [String,nil]
def strftime(format)
value&.strftime(format)
end
# Devuelve una fecha, si no hay ninguna es la fecha de hoy.
#
# @return [Date]
def value
return self[:value] if self[:value].is_a? Date
return self[:value] if self[:value].is_a? Time
return document_value || default_value unless self[:value]
begin
self[:value] = Date.parse self[:value]
rescue ArgumentError, TypeError
default_value
end
end
end