¿Cómo expresar una consulta NOT IN con ActiveRecord / Rails?
Solo para actualizar esto, ya que parece que mucha gente viene a esto, si está utilizando Rails 4, vea las respuestas de Trung Lê` y VinniVidiVicci.
Topic.where.not(forum_id:@forums.map(&:id))
Topic.where(published:true).where.not(forum_id:@forums.map(&:id))
Espero que haya una solución fácil que no impliquefind_by_sql
, si no, supongo que tendrá que funcionar.
encontréEste artículo que hace referencia a esto:
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
que es lo mismo que
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
Me pregunto si hay una manera de hacerNOT IN
con eso, como:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)