बस इसे अपडेट करने के लिए क्योंकि ऐसा लगता है कि बहुत से लोग इस पर आते हैं, यदि आप ट्रान्स Lê` और VinniVidiVicci के जवाबों पर रेल 4 का उपयोग कर रहे हैं।
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'])