Więc błąd nie był w kodzie, który opublikowałem. Miałem pomocnika, aby ustalić, według której kolumny zamówić. Wyglądało to mniej więcej tak:
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"
Nie wiedziałem, że to faktycznie połączy dodatkowe terminy z Post.column_names
. Naprawiłem ten problem, tworząc kopię za pomocą Post.column_names.clone
i to rozwiązało problem.
Czuję się dość głupio, popełniając ten błąd, ale mam nadzieję, że pomoże to komuś innemu, kto napotka ten sam problem.