Helpex - Trao đổi & giúp đỡ Đăng nhập
7

Tôi có một mô hình khách hàng có nhiều cuộc họp.

class Client < ActiveRecord::Base

  has_many :meetings

end

class Meeting < ActiveRecord::Base

  belongs_to :client

end

Tôi muốn tạo một truy vấn ActiveRecord sẽ trả về các máy khách được sắp xếp theo thứ tự của cuộc họp gần đây nhất (như được xác định bởi cột meeting_time), nhưng không biết cách thực hiện việc này. Rõ ràng là tôi cần nối các bảng bằng cách nào đó nhưng tôi không biết cách tạo một truy vấn con phù hợp trong AR. Làm cách nào để tôi viết tham gia chỉ bao gồm 1 cuộc họp cho mỗi khách hàng, cụ thể là cuộc họp gần đây nhất (tức là giá trị cao nhất cho cuộc họp.meeting_time cho một cuộc họp nhất định.client_id). Cơ sở dữ liệu của tôi là PostgreSQL.

Tôi đã gặp phải những vấn đề tương tự với vấn đề này trước đây, phải vật lộn với chúng và rõ ràng là không học được nhiều điều từ quá trình này. Một con trỏ đến một nguồn tốt để tìm hiểu về các loại tình huống này cũng sẽ được đánh giá cao.

7 hữu ích 2 bình luận 3.0k xem chia sẻ
9

Một cái gì đó như thế này?

Client.joins(:meetings).group('clients.id').order('max(meetings.meeting_time) DESC')

Điều này sẽ:

  1. Lấy khách hàng
  2. Tham gia cùng họ với các cuộc họp
  3. Nhóm theo khách hàng (id)
  4. Bây giờ chúng ta có thể sử dụng max(meetings.meeting_time)cuộc họp gần đây nhất cho mỗi khách hàng
  5. Sau đó, sắp xếp khách hàng theo thời gian họp gần đây nhất theo thứ tự giảm dần
9 hữu ích 5 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ ruby-on-rails ruby-on-rails-3 activerecord rails-activerecord , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading