只是为了更新这个,因为似乎有很多人来到这里,如果你使用Rails 4,请查看TrungLê`和VinniVidiVicci的答案.
Topic.where.not(forum_id:@forums.map(&:id))
Topic.where(published:true).where.not(forum_id:@forums.map(&:id))
Run Code Online (Sandbox Code Playgroud)
我希望有一个简单的解决方案不涉及find_by_sql,如果不是,那么我想这将必须工作.
我发现这篇文章引用了这个:
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
Run Code Online (Sandbox Code Playgroud)
这是一样的
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法NOT IN解决这个问题,例如:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
Run Code Online (Sandbox Code Playgroud) 我正在尝试写一个ActiveRecord语句,我正在寻找其他表中不存在id的所有记录......
什么是语法?
@events = Event.find(:all, :include => :personals,
:conditions => ["event.id != ? ", @user.personal.event_id ])
Run Code Online (Sandbox Code Playgroud)
personals是一个具有user_id和event_id的连接表....
所以我基本上试图找到用户没有添加到他们自己的个人记录集的每个事件记录....
有没有更好的方法来写这个....不是null或什么?