Chỉ để cập nhật điều này vì có vẻ như rất nhiều người tìm đến nó, nếu bạn đang sử dụng Rails 4, hãy nhìn vào câu trả lời của Trung Lê` và VinniVidiVicci.
Topic.where.not(forum_id:@forums.map(&:id))
Topic.where(published:true).where.not(forum_id:@forums.map(&:id))
Tôi hy vọng có một giải pháp dễ dàng không liên quan find_by_sql
, nếu không thì tôi đoán nó sẽ phải hoạt động.
Tôi tìm thấy bài viết này tham khảo này:
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
giống như
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
Tôi tự hỏi nếu có một cách để làm NOT IN
với điều đó, như:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
Person.all(:name.not => ['bob','rick','steve'])