Tôi đang sử dụng Ruby 1.9.2, Rails 3.0.x và tôi sử dụng MySQL DB. Tôi có một Mô hình tin nhắn, nơi người ta có thể đăng tin nhắn mới mỗi ngày.Bản ghi nhóm theo cả tháng và năm trong Rails
Tôi có hành động chỉ mục nơi tôi muốn hiển thị các thư này được nhóm theo cả tháng và năm. Điều này về cơ bản được sử dụng để lọc tin nhắn.
truy vấn của tôi trông như thế này: -
@active_msgs = Messages.where('expiry > ?', Time.now).order('created_at DESC')
tôi đã sử dụng chức năng group_by trong Rails, sau khi tham khảo this post
My Nhóm By Query là: -
@msgs_by_month = @active_msgs.all.group_by {|u| u.created_at.month }
tôi trả lại một Hash được gọi là @msgs_by_month. Điều này giúp tôi nhóm các tin nhắn theo tháng, nhưng tôi cần tính đến năm, để tạo thành khóa duy nhất, vì nó sẽ giúp tôi phân biệt giữa ví dụ: tháng 9 năm 2011 và tháng 9 năm 2012.
Khóa hiện tại của tôi chỉ có kiểu Hash [Month] (ví dụ Hash [9] => cho tháng 9, tôi có thể hiển thị tất cả các giá trị thích hợp). Làm thế nào tôi có thể nhận được một khóa duy nhất của loại tháng, năm mà tôi có thể dễ dàng lặp lại mặc dù để hiển thị tất cả các hồ sơ được nhóm theo tháng và năm tạo.
Cảm ơn bạn
EDIT: -
Tôi đoán một cách để làm điều này, là để tận dụng các created_at.to_date
api, với điều kiện here . Tôi chỉ tự hỏi, làm thế nào tôi có thể loại bỏ ngày từ created_at.to_date
để có được một độc đáo tháng, năm tổ hợp phím mà có thể làm việc với chức năng group_by.
thể trùng lặp của [MySQL Query GROUP BY ngày/tháng/năm] (http://stackoverflow.com/questions/508791/mysql-query-group-by-day-month- năm) – noodl
Không, không trùng lặp. q bạn đang đề cập đến chỉ liên quan đến MYSQL trong đó q này là một đường ray + mysql .. – Philip