2011-10-09 30 views
5

Tôi có một mô hình thu thập dữ liệu tài chính từ khách hàng của tôi mỗi quý lịch mỗi năm (vì vậy: quý 1, 2, 3 và 4 cho bất kỳ năm nào). Để đơn giản, mô hình được gọi là Quarter và có: client_id,: quarter,: year, và: các thuộc tính số lượng. Tôi muốn có thể truy vấn và hiển thị bốn mục cuối cùng cho thuộc tính: số lượng dựa trên quý hiện đang được hiển thị.Rails 3- Truy xuất các bản ghi N cuối

Ví dụ: nếu tôi đang xem: quý 3 cho: năm 2011, thì tôi muốn hiển thị số tiền: cho quý hiện tại (dễ dàng), cũng như: số tiền cho: quý 2 & 1 cho: năm 2011 và: quý 4 cho: năm 2010. Điều đó có hợp lý không?

Tôi đã thực hiện công việc này bằng cách gán một biến khác cho mỗi bản ghi mà tôi muốn truy xuất, sau đó sử dụng các câu lệnh elsif để tìm nó, nhưng tôi biết phải có cách làm sạch hơn.

Làm cách nào để thực hiện việc này?

Trả lời

7

với Rails giao diện truy vấn 2.x câu trả lời là:

Quarter.find(:all, :order => :year, :limit => 4).reverse 

với Rails giao diện truy vấn 3.x câu trả lời là:

Quarter.order(:by => :year).limit(4).reverse 

btw. Tôi nghĩ bạn không nên lưu trữ dữ liệu của mình trong một mô hình có tên "Quarter", mà là trong mô hình có tên "FinancialData" và có mô hình đó có thuộc tính "quý" có chứa 2011/1, 2011/2 hoặc havt hai thuộc tính : năm và: quý mà cần phải được lập chỉ mục cùng

Xem thêm:

http://guides.rubyonrails.org/active_record_querying.html

http://m.onkey.org/active-record-query-interface

+0

Người đàn ông tuyệt vời, cảm ơn. Xin lỗi tôi thực sự khá mới ở đây, làm thế nào sau đó tôi sẽ đặt này trong quan điểm của tôi để chỉ hiển thị các mục cho thuộc tính: số tiền? – FattRyan

+0

kiểm tra trang web này: http://railscasts.com/ - nó có các tập thực sự hữu ích - một số ở cấp độ mới bắt đầu, một số ở cấp độ nâng cao. Có thể tìm kiếm "Xem" ở đó. – Tilo

+0

Cảm ơn một lần nữa Tilo. Những gì tôi đã làm chỉ là gán một biến cho truy vấn này trong bộ điều khiển của tôi, giống như: @lastfouritems = query, sau đó hiển thị biến đó trong khung nhìn của tôi. Những gì nó làm mặc dù là hiển thị tất cả các thuộc tính cho mô hình của tôi trong một danh sách lớn, thay vì chỉ là: thuộc tính số tiền. Làm cách nào để tách biệt thuộc tính này và chỉ hiển thị thuộc tính đó? – FattRyan

6

để lấy hồ sơ N lần cuối:

Quarter.last(n).reverse 
+0

Điều này phù hợp với Rails 4 trở lên – SsouLlesS

1
User.all.order("id desc").limit(40) 
Các vấn đề liên quan