Reuse authors when rendering event Atom feeds

Previously we'd use "event.author_email" which translates to
"event.author.email". This would result in an extra query being executed
_for every event_ just to get the same author's Email address.

Instead of doing all this useless work we can just pass the User object
returned by "event.author" since:

1. This allows us to re-use the user object's Email address.
2. Authors are eager-loaded, so this doesn't cause any N+1 queries.
This commit is contained in:
Yorick Peterse 2017-11-28 17:06:04 +01:00
parent 52f5259ae4
commit 631801674f
No known key found for this signature in database
GPG key ID: EDD30D2BEB691AC9
2 changed files with 11 additions and 1 deletions

View file

@ -5,7 +5,12 @@ xml.entry do
xml.link href: event_feed_url(event) xml.link href: event_feed_url(event)
xml.title truncate(event_feed_title(event), length: 80) xml.title truncate(event_feed_title(event), length: 80)
xml.updated event.updated_at.xmlschema xml.updated event.updated_at.xmlschema
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(event.author_email))
# We're deliberately re-using "event.author" here since this data is
# eager-loaded. This allows us to re-use the user object's Email address,
# instead of having to run additional queries to figure out what Email to use
# for the avatar.
xml.media :thumbnail, width: "40", height: "40", url: image_url(avatar_icon(event.author))
xml.author do xml.author do
xml.username event.author_username xml.username event.author_username

View file

@ -0,0 +1,5 @@
---
title: Reuse authors when rendering event Atom feeds
merge_request:
author:
type: performance