mirror of
https://0xacab.org/sutty/sutty
synced 2025-02-22 14:21:49 +00:00
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
|
Digest::SHA1.hexdigest id
|
||||||
end
|
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
|
# Solo ejecuta la magia de OpenStruct si el campo existe en la
|
||||||
# plantilla
|
# plantilla
|
||||||
|
@ -101,12 +93,16 @@ class Post < OpenStruct
|
||||||
# Detecta si es un atributo válido o no, a partir de la tabla de la
|
# Detecta si es un atributo válido o no, a partir de la tabla de la
|
||||||
# plantilla
|
# plantilla
|
||||||
def attribute?(mid)
|
def attribute?(mid)
|
||||||
attrs = DEFAULT_ATTRIBUTES + PRIVATE_ATTRIBUTES + PUBLIC_ATTRIBUTES
|
mid = attribute_name mid
|
||||||
if singleton_class.method_defined? :attributes
|
included = DEFAULT_ATTRIBUTES.include?(mid) ||
|
||||||
(attrs + attributes).include? attribute_name(mid)
|
PRIVATE_ATTRIBUTES.include?(mid) ||
|
||||||
else
|
PUBLIC_ATTRIBUTES.include?(mid)
|
||||||
attrs.include? attribute_name(mid)
|
|
||||||
|
if !included && singleton_class.method_defined?(:attributes)
|
||||||
|
included = attributes.include? attribute_name(mid)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
included
|
||||||
end
|
end
|
||||||
|
|
||||||
# Devuelve los strong params para el layout
|
# Devuelve los strong params para el layout
|
||||||
|
@ -248,6 +244,15 @@ class Post < OpenStruct
|
||||||
|
|
||||||
private
|
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
|
def document_usuaries
|
||||||
document.data.fetch('usuaries', [])
|
document.data.fetch('usuaries', [])
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue