Eu escrevi algumas consultas complexas (pelo menos para mim) com a interface de consulta do 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})
Ambas as consultas funcionam bem sozinhas. Ambos retornam objetos Post. Eu gostaria de combinar essas postagens em um único ActiveRelation. Como pode haver centenas de milhares de postagens em algum ponto, isso precisa ser feito no nível do banco de dados. Se fosse uma consulta MySQL, eu poderia simplesmente usar o UNION
operador. Alguém sabe se posso fazer algo semelhante com a interface de consulta do RoR?
Post.watched_news_posts.watched_topic_posts
. Pode ser necessário enviar params para os escopos de coisas como:user_id
e:topic
.