เพียงแค่อัปเดตสิ่งนี้เพราะดูเหมือนว่ามีผู้คนมากมายมาที่นี่หากคุณใช้ 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'])