Rails 4を使用している場合は、多くの人がこれにアクセスするように思われるため、これを更新するだけで、TrungLêとVinniVidiVicciの回答を確認してください。
Topic.where.not(forum_id:@forums.map(&:id))
Topic.where(published:true).where.not(forum_id:@forums.map(&:id))
関係しない簡単な解決策があるといいのですがfind_by_sql
、そうでなければ機能するはずです。
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
それは同じです
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
私はそれを行う方法があるかどうか疑問に思っていますNOT IN
:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
Person.all(:name.not => ['bob','rick','steve'])