Как выразить запрос NOT IN с помощью ActiveRecord / Rails?

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

. Мне интересно, есть ли способ сделать НЕ В с этим, например:

SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)

197
задан user2262149 27 August 2018 в 20:11
поделиться