Просто чтобы обновить это, так как кажется, что многие приходят к этому, если вы используете Rails 4, посмотрите на ответы Trung Lê` и 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'])