diff --git a/app/models/post.rb b/app/models/post.rb index 91d18d9f..3e838e09 100644 --- a/app/models/post.rb +++ b/app/models/post.rb @@ -64,14 +64,6 @@ class Post < OpenStruct Digest::SHA1.hexdigest id end - # Levanta un error si al construir el artículo no pasamos un atributo. - def default_attributes_missing(**args) - DEFAULT_ATTRIBUTES.each do |attr| - i18n = I18n.t("exceptions.post.#{attr}_missing") - - raise ArgumentError, i18n unless args[attr].present? - end - end # Solo ejecuta la magia de OpenStruct si el campo existe en la # plantilla @@ -101,12 +93,16 @@ class Post < OpenStruct # Detecta si es un atributo válido o no, a partir de la tabla de la # plantilla def attribute?(mid) - attrs = DEFAULT_ATTRIBUTES + PRIVATE_ATTRIBUTES + PUBLIC_ATTRIBUTES - if singleton_class.method_defined? :attributes - (attrs + attributes).include? attribute_name(mid) - else - attrs.include? attribute_name(mid) + mid = attribute_name mid + included = DEFAULT_ATTRIBUTES.include?(mid) || + PRIVATE_ATTRIBUTES.include?(mid) || + PUBLIC_ATTRIBUTES.include?(mid) + + if !included && singleton_class.method_defined?(:attributes) + included = attributes.include? attribute_name(mid) end + + included end # Devuelve los strong params para el layout @@ -248,6 +244,15 @@ class Post < OpenStruct private + # Levanta un error si al construir el artículo no pasamos un atributo. + def default_attributes_missing(**args) + DEFAULT_ATTRIBUTES.each do |attr| + i18n = I18n.t("exceptions.post.#{attr}_missing") + + raise ArgumentError, i18n unless args[attr].present? + end + end + def document_usuaries document.data.fetch('usuaries', []) end