Entonces el error no estaba en el código que publiqué. Tuve un ayudante para determinar por qué columna ordenar. Se veía algo como esto:
valid_names = Post.column_names
valid_names = valid_names.concat(["users.display_name", "subtopics.name",
"categories.category_name"])
valid_names.include?(params[:sort]) ? params[:sort] : "popularity"
Poco sabía que esto en realidad concatenaría los términos adicionales en Post.column_names
. Solucioné este problema haciendo una copia con Post.column_names.clone
y esto resolvió el problema.
Me siento bastante tonto al cometer este error, pero espero que esto ayude a alguien más que tenga el mismo problema.