Здається, я не можу використовувати параметр 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.