Bạn có thể muốn xem lại các cách có thể để viết loại truy vấn này trong câu trả lời này để áp dụng điều kiện cho nhiều hàng tham gia . Đây là một tùy chọn khả thi để triển khai truy vấn của bạn trong Rails bằng cách sử dụng 1B, cách tiếp cận truy vấn phụ ...
Xác định truy vấn trong PostTag mô hình sẽ lấy Post Giá trị ID cho một thẻ Tag nhất định tên:
# PostTag.rb
def self.post_ids_for_tag(tag_name)
joins(:tag).where(tags: { name: tag_name }).select(:post_id)
end
Xác định một truy vấn trong Post mô hình sẽ lấy Post bản ghi cho một thẻ Tag nhất định tên, sử dụng cấu trúc truy vấn phụ:
# Post.rb
def self.for_tag(tag_name)
where("id IN (#{PostTag.post_ids_for_tag(tag_name).to_sql})")
end
Sau đó, bạn có thể sử dụng một truy vấn như sau:
Post.for_tag("basil").for_tag("tomato")