Để viết lại truy vấn SQL bạn có trong câu hỏi của mình, tôi nghĩ nó giống như sau (mặc dù tôi đang gặp khó khăn trong việc hình dung đầy đủ mối quan hệ mô hình của bạn, vì vậy đây là một chút phỏng đoán):
RagaContextApplicantsSong.
joins(:raga_contest_applicants => [:raga_content_rounds], :contest_cat).
group('raga_contest_rounds.contest_cat_id')
... như vậy mà các phương pháp joins
sẽ chăm sóc của cả hai tham gia cũng như WHERE
khoản, sau đó cuối cùng bởi group
gọi.
Khi ngày càng nhiều để tham khảo:
Nếu bạn đang tham gia nhiều hiệp hội với cùng mô hình you can simply list them:
Post.joins(:category, :comments)
Returns all posts that have a category and at least one comment
Nếu bạn đang tham gia bảng lồng nhau, bạn có thể liệt kê chúng như trong một hash :
Post.joins(:comments => :guest)
Returns all comments made by a guest
Kết hợp lồng nhau, nhiều cấp:
Category.joins(:posts => [{:comments => :guest}, :tags])
Returns all posts with their comments where the post has at least one comment made by a guest
Bạn cũng có thể chuỗi ActiveRecord Query Interface gọi như vậy:
Post.joins(:category, :comments)
...produces the same SQL as...
Post.joins(:category).joins(:comments)
Nếu vẫn thất bại, bạn có thể luôn luôn pass a SQL fragment directly into the joins
method như một bước đệm để nhận được từ truy vấn làm việc của bạn để một cái gì đó hơn ARQI trung tâm
Client.joins('LEFT OUTER JOIN addresses ON addresses.client_id = clients.id')
=> SELECT clients.* FROM clients LEFT OUTER JOIN addresses ON addresses.client_id = clients.id
cảm ơn rất nhiều nỗ lực bạn đã thực hiện để giải thích chi tiết mà không có nhiều thông tin được đề cập. Tôi mới đến đường ray, sau khi làm việc trong .net trong 6 năm tôi thực sự có thời gian khó khăn để mã đường ray, nhưng giúp đỡ từ những kẻ như bạn giữ cho tôi đi .. cảm ơn một lần nữa .. – pramodtech
niềm vui của tôi. Chào mừng bạn đến với cộng đồng Rails. Như người Ruby muốn nói [MINSWAN] (http://blog.steveklabnik.com/posts/2011-08-19-matz-is-nice-so-we-are-nice) – jefflunt
Liên kết lồng nhau, nhiều cấp # => wizardry Sử dụng cú pháp băm đơn giản 'Category.joins (bài đăng: [{comments:: guest},: tags])' – Epigene