只是为了更新此内容,因为似乎有很多人对此进行了介绍,如果您使用的是Rails 4,请查看TrungLê`和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'])