Donc l'erreur n'était pas dans le code que j'ai posté. J'ai eu un assistant pour déterminer par quelle colonne commander. Cela ressemblait à ceci :
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"
Je ne savais pas que cela concaténerait en fait les termes supplémentaires sur Post.column_names
. J'ai résolu ce problème en faisant une copie avec Post.column_names.clone
et cela a résolu le problème.
Je me sens plutôt idiot de faire cette erreur, mais j'espère que cela aidera quelqu'un d'autre qui rencontre le même problème.