Ditt omedelbara problem är att du producerar ogiltig SQL för PostgreSQL:
SELECT category FROM "microposts" GROUP BY category ORDER BY microposts.created_at DESC
Din ORDER BY matchar inte resten av din fråga. Du kan inte använda en kolumn i en grupperad fråga om inte den kolumnen också är grupperad eller om kolumnen visas i en aggregerad funktion, det är vad felmeddelandet betyder. Anledningen är att PostgreSQL inte vet vilken rad som är created_at
att använda när en grupp rader kombineras av GROUP BY-satsen; vissa databaser kommer bara tyst att välja en rad på egen hand, PostgreSQL föredrar att vara strikt och vill att du själv ska ta bort oklarheten.
Prova att ange beställningen själv:
@categories = Micropost.select("category").group("category").order("category")
Ett annat alternativ är att använda DISTINCT istället för GROUP BY för att undvika dubbletter:
@categories = Micropost.select('DISTINCT(category)')
BTW, du borde verkligen inte göra sånt i en vy, du kanske vill flytta det till din handkontroll.
Ditt verkliga problem är att du utvecklar ovanpå en databas medan du distribuerar på en annan. Jag skulle rekommendera att du byter utvecklingsmiljö till PostgreSQL 8.3 (om du distribuerar till en Heroku delad databas) eller PostgreSQL 9.0 (om du distribuerar till en dedikerad databas).