discourse/app/serializers/detailed_user_badge_serializer.rb
Kyle Zhao 983dba37ce FIX: use BasicUserSerializer for user_badge.granted_by (#6266)
BasicUserSerializer contains enough information for the badges page,
while UserSerializer issues ~100 SQL queries on the fly when serializing
the field without preloading.
2018-08-14 08:11:14 +10:00

26 lines
560 B
Ruby

class DetailedUserBadgeSerializer < BasicUserBadgeSerializer
has_one :granted_by, serializer: UserBadgeSerializer::UserSerializer
attributes :post_number, :topic_id, :topic_title
def include_post_number?
object.post
end
alias :include_topic_id? :include_post_number?
alias :include_topic_title? :include_post_number?
def post_number
object.post.post_number if object.post
end
def topic_id
object.post.topic_id if object.post
end
def topic_title
object.post.topic.title if object.post && object.post.topic
end
end