Takže chyba nebyla v kódu, který jsem zveřejnil. Měl jsem pomocníka, který určil, podle kterého sloupce objednat. Vypadalo to nějak takto:
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"
Netušil jsem, že to ve skutečnosti zřetězí další výrazy do Post.column_names
. Tento problém jsem vyřešil vytvořením kopie pomocí Post.column_names.clone
a tím se problém vyřešil.
Připadám si docela hloupě, když dělám tuto chybu, ale doufám, že to pomůže někomu dalšímu, kdo se potýká se stejným problémem.