How to express a NOT IN query with ActiveRecord/Rails?
Rails 4+:
Article.where.not(title: ['Rails 3', 'Rails 5'])
Rails 3:
Topic.where('id NOT IN (?)', Array.wrap(actions))
Where actions
is an array with: [1,2,3,4,5]
FYI, In Rails 4, you can use not
syntax:
Article.where.not(title: ['Rails 3', 'Rails 5'])
You can try something like:
Topic.find(:all, :conditions => ['forum_id not in (?)', @forums.map(&:id)])
You might need to do @forums.map(&:id).join(',')
. I can't remember if Rails will the argument into a CSV list if it is enumerable.
You could also do this:
# in topic.rbnamed_scope :not_in_forums, lambda { |forums| { :conditions => ['forum_id not in (?)', forums.select(&:id).join(',')] }# in your controller Topic.not_in_forums(@forums)