Então o erro não estava no código que postei. Eu tive um ajudante para determinar por qual coluna ordenar. Parecia algo assim:
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"
Mal sabia eu que isso concatenaria os termos extras em
Post.column_names
. Corrigi esse problema fazendo uma cópia com Post.column_names.clone
e isso resolveu o problema. Eu me sinto muito bobo cometendo esse erro, mas espero que isso ajude alguém que esteja enfrentando o mesmo problema.