optimizacion: no sumar los atributos todo el tiempo
con esta optimización bajamos 10s en la generación del índice de posts para observatoriociudad.org y alrededor de medio millón de asignaciones de variables!
This commit is contained in:
parent
aa9806d8f6
commit
7467356659
1 changed files with 18 additions and 13 deletions
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue