Ich kann anscheinend die Option ActiveRecord :: Base.find nicht verwenden: Bestellen Sie mehr als eine Spalte gleichzeitig.
Zum Beispiel habe ich ein "Show" -Modell mit Datum und teilnehmenden Spalten.
Wenn ich den folgenden Code ausführe:
@shows = Show.find(:all, :order => "date")
Ich erhalte folgende Ergebnisse:
[#<Show id: 7, date: "2009-04-18", attending: 2>,
#<Show id: 1, date: "2009-04-18", attending: 78>,
#<Show id: 2, date: "2009-04-19", attending: 91>,
#<Show id: 3, date: "2009-04-20", attending: 16>,
#<Show id: 4, date: "2009-04-21", attending: 136>]
Wenn ich den folgenden Code ausführe:
@shows = Show.find(:all, :order => "attending DESC")
[#<Show id: 4, date: "2009-04-21", attending: 136>,
#<Show id: 2, date: "2009-04-19", attending: 91>,
#<Show id: 1, date: "2009-04-18", attending: 78>,
#<Show id: 3, date: "2009-04-20", attending: 16>,
#<Show id: 7, date: "2009-04-18", attending: 2>]
Aber wenn ich renne:
@shows = Show.find(:all, :order => "date, attending DESC")
ODER
@shows = Show.find(:all, :order => "date, attending ASC")
ODER
@shows = Show.find(:all, :order => "date ASC, attending DESC")
Ich erhalte die gleichen Ergebnisse wie nur das Sortieren nach Datum:
[#<Show id: 7, date: "2009-04-18", attending: 2>,
#<Show id: 1, date: "2009-04-18", attending: 78>,
#<Show id: 2, date: "2009-04-19", attending: 91>,
#<Show id: 3, date: "2009-04-20", attending: 16>,
#<Show id: 4, date: "2009-04-21", attending: 136>]
Wo wie, ich möchte diese Ergebnisse erhalten:
[#<Show id: 1, date: "2009-04-18", attending: 78>,
#<Show id: 7, date: "2009-04-18", attending: 2>,
#<Show id: 2, date: "2009-04-19", attending: 91>,
#<Show id: 3, date: "2009-04-20", attending: 16>,
#<Show id: 4, date: "2009-04-21", attending: 136>]
Dies ist die Abfrage, die aus den Protokollen generiert wird:
[4;35;1mUser Load (0.6ms)[0m [0mSELECT * FROM "users" WHERE ("users"."id" = 1) LIMIT 1[0m
[4;36;1mShow Load (3.0ms)[0m [0;1mSELECT * FROM "shows" ORDER BY date ASC, attending DESC[0m
[4;35;1mUser Load (0.6ms)[0m [0mSELECT * FROM "users" WHERE ("users"."id" = 1) [0m
Zum Schluss hier mein Modell:
create_table "shows", :force => true do |t|
t.string "headliner"
t.string "openers"
t.string "venue"
t.date "date"
t.text "description"
t.datetime "created_at"
t.datetime "updated_at"
t.decimal "price"
t.time "showtime"
t.integer "attending", :default => 0
t.string "time"
end
Was vermisse ich? Was mache ich falsch?
UPDATE: Danke für all Ihre Hilfe, aber es scheint, dass Sie alle genauso ratlos waren wie ich. Was das Problem löste, war das Wechseln der Datenbanken. Ich habe vom Standard-SQLite3 auf MySQL umgestellt.