Nur um dies zu aktualisieren, da es scheint, dass viele Leute dazu kommen, wenn Sie Rails 4 verwenden, schauen Sie sich die Antworten von Trung Lê` und VinniVidiVicci an.
Topic.where.not(forum_id:@forums.map(&:id))
Topic.where(published:true).where.not(forum_id:@forums.map(&:id))
Ich hoffe, es gibt eine einfache Lösung, die nicht beinhaltet find_by_sql
, wenn nicht, dann muss das wohl funktionieren.
Ich habe diesen Artikel gefunden, der darauf verweist:
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
das ist das gleiche wie
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
Ich frage mich, ob es einen Weg gibt, damit umzugehen NOT IN
, wie:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
Person.all(:name.not => ['bob','rick','steve'])