Ruby on Rails查找所有父母的子记录

时间:2011-09-06 19:42:26

标签: ruby-on-rails activerecord

我有两个模型 - Topic和ContentItems。

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

有没有人知道如何在不使用计数器缓存的情况下选择至少包含一个content_item的所有主题?

目前我正在做类似的事情:

Topic.joins(:content_items).uniq

但是它在内存中处理它,所以如果我不能链接一个限制或订单,即我不能做

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

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

全部谢谢

1 个答案:

答案 0 :(得分:3)

你可以试试这个

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

OR

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