Tôi đã viết một vài truy vấn phức tạp (ít nhất là với tôi) với giao diện truy vấn của Ruby on Rail:
watched_news_posts = Post.joins(:news => :watched).where(:watched => {:user_id => id})
watched_topic_posts = Post.joins(:post_topic_relationships => {:topic => :watched}).where(:watched => {:user_id => id})
Cả hai truy vấn này đều hoạt động tốt. Cả hai đều trả về đối tượng Đăng. Tôi muốn kết hợp các bài đăng này thành một ActiveRelation duy nhất. Vì có thể có hàng trăm nghìn bài đăng vào một thời điểm nào đó, điều này cần được thực hiện ở cấp cơ sở dữ liệu. Nếu đó là một truy vấn MySQL, tôi chỉ cần sử dụng UNION
toán tử. Có ai biết liệu tôi có thể làm điều gì đó tương tự với giao diện truy vấn của RoR không?
Post.watched_news_posts.watched_topic_posts
. Bạn có thể cần phải gửi nhân viên đến phạm vi cho những thứ như:user_id
và:topic
.