Tôi dường như không thể sử dụng tùy chọn ActiveRecord :: Base.find: đặt nhiều hơn một cột cùng một lúc.Rails Active Record tìm thấy (: all,: order =>) issue
Ví dụ: tôi có mô hình "Hiển thị" có ngày và cột tham dự.
Nếu tôi chạy đoạn mã sau:
@shows = Show.find(:all, :order => "date")
tôi nhận được kết quả như sau:
[#<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>]
Nếu tôi chạy đoạn mã sau:
@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>]
Nhưng, nếu tôi chạy :
@shows = Show.find(:all, :order => "date, attending DESC")
HOẶC
@shows = Show.find(:all, :order => "date, attending ASC")
HOẶC
@shows = Show.find(:all, :order => "date ASC, attending DESC")
tôi nhận được kết quả tương tự như chỉ sắp xếp theo ngày:
[#<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>]
Trong trường hợp như, tôi muốn để có được những kết quả này:
[#<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>]
Đây là câu hỏi được tạo ra từ các bản ghi:
[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
Cuối cùng, đây là mô hình của tôi:
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
tôi thiếu gì? Tôi đang làm gì sai?
CẬP NHẬT: Cảm ơn tất cả sự giúp đỡ của bạn, nhưng có vẻ như tất cả các bạn đều bị choáng váng như tôi. Điều gì đã giải quyết được vấn đề đã thực sự chuyển đổi cơ sở dữ liệu. Tôi chuyển từ sqlite3 mặc định sang mysql.
Tôi không có một thiết lập đường ray vào lúc này để kiểm tra mã của bạn; Truy vấn nào đang được tạo cho hai lệnh? Bạn có thể kiểm tra nhật ký trong/nhật ký để xem. – YenTheFirst
Truy vấn sẽ rất hữu ích thực sự – aivarsak
Có thể không liên quan, nhưng bạn đang sử dụng phiên bản AR nào và DB là gì? –