Кажется, я не могу использовать опцию ActiveRecord :: Base.find: заказывать более одного столбца за раз.
Например, у меня есть модель «Показать» с датой и посещающими столбцами.
Если я запускаю следующий код:
@shows = Show.find(:all, :order => "date")
Я получаю следующие результаты:
[#<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>]
Если я запускаю следующий код:
@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>]
Но, если я бегу:
@shows = Show.find(:all, :order => "date, attending DESC")
ИЛИ
@shows = Show.find(:all, :order => "date, attending ASC")
ИЛИ
@shows = Show.find(:all, :order => "date ASC, attending DESC")
Я получаю те же результаты, что и при сортировке по дате:
[#<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>]
Где как, я хочу получить эти результаты:
[#<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>]
Это запрос, сгенерированный из журналов:
[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
Наконец, вот моя модель:
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
Что мне не хватает? Что я делаю не так?
ОБНОВЛЕНИЕ: Спасибо за вашу помощь, но кажется, что вы все были в тупике так же, как и я. То, что решило проблему, фактически переключило базы данных. Я переключился с sqlite3 по умолчанию на mysql.