我希望有一个简单的解决方案,不涉及find_by_sql,如果没有,那么我想这将不得不工作。
我发现这篇文章引用了这个:
Topic.find(:all, :conditions => { :forum_id => @forums.map(&:id) })
哪个是一样的
SELECT * FROM topics WHERE forum_id IN (<@forum ids>)
我想知道是否有一种方法可以不这样做,比如:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
导轨 4+:
Article.where.not(title: ['Rails 3', 'Rails 5'])
Rails 3:
Topic.where('id NOT IN (?)', Array.wrap(actions))
其中actions是一个数组,包含:[1,2,3,4,5]
导轨 4+:
Article.where.not(title: ['Rails 3', 'Rails 5'])
Rails 3:
Topic.where('id NOT IN (?)', Array.wrap(actions))
其中actions是一个数组,包含:[1,2,3,4,5]
你可能想看看Ernie Miller的meta_where插件。你的SQL语句:
SELECT * FROM topics WHERE forum_id NOT IN (<@forum ids>)
...可以这样表示:
Topic.where(:forum_id.nin => @forum_ids)
Railscasts的Ryan Bates制作了一个很好的视频来解释MetaWhere。
不确定这是否是你想要的,但在我看来,它肯定比嵌入式SQL查询更好。