2011-09-06 53 views
0

我有两个模型 - Topic和ContentItems。Ruby on Rails找到所有父母都有子记录

has_many content_items主题,但是可以在没有任何预先存在的content_items的情况下创建主题。

有谁知道如何选择所有主题至少有一个content_item而不使用计数器缓存?

我目前正在做这样的事情:

Topic.joins(:content_items).uniq 

但处理它在内存中,所以如果我不能链断它的限制或命令,即我不能做

Topic.joins(:content_items).uniq.limit(10).order("created_at DESC") 

计数器缓存是一个可能的长期选项,但它比现在想要做的更大一点,除非没有更好的解决方案。

感谢所有

回答

3

你可以在这里尝试这种

Topic.joins(:content_items).select("DISTINCT topics.*") 

OR

Topic.include(:content_items).where("content_items.id IS NULL") 
+0

第一个看起来完美的作品。谢谢! – JoshReedSchramm

+0

第二种解决方案存在拼写错误。我修好了。 –

相关问题