Quindi l'errore non era nel codice che ho postato. Ho avuto un aiuto per determinare quale colonna ordinare. Sembrava qualcosa del genere:
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"
Non sapevo che questo avrebbe effettivamente concatenato i termini extra su Post.column_names
. Ho risolto questo problema facendo una copia con Post.column_names.clone
e questo ha risolto il problema.
Mi sento abbastanza sciocco fare questo errore, ma spero che questo possa aiutare qualcun altro che sta riscontrando lo stesso problema.