Dit umiddelbare problem er, at du producerer ugyldig SQL til PostgreSQL:
SELECT category FROM "microposts" GROUP BY category ORDER BY microposts.created_at DESC
Din ORDER BY matcher ikke resten af din forespørgsel. Du kan ikke bruge en kolonne i en grupperet forespørgsel, medmindre den kolonne også er grupperet, eller hvis kolonnen vises i en samlet funktion, er det, hvad fejlmeddelelsen betyder. Årsagen er, at PostgreSQL ikke ved, hvilken række der er created_at
at bruge, når en gruppe af rækker kombineres af GROUP BY-sætningen; nogle databaser vil bare lydløst vælge en række af sig selv, PostgreSQL foretrækker at være streng og vil have dig til at fjerne tvetydigheden selv.
Prøv selv at angive rækkefølgen:
@categories = Micropost.select("category").group("category").order("category")
En anden mulighed er at bruge DISTINCT i stedet for GROUP BY for at undgå dubletter:
@categories = Micropost.select('DISTINCT(category)')
BTW, du burde virkelig ikke gøre den slags ting i en visning, du vil måske flytte det til din controller.
Dit virkelige problem er, at du udvikler oven på én database, mens du implementerer på en anden. Jeg vil anbefale, at du skifter dit udviklingsmiljø til PostgreSQL 8.3 (hvis du implementerer til en Heroku delt database) eller PostgreSQL 9.0 (hvis du implementerer til en dedikeret database).