如何选择不包含子记录的记录?

时间:2015-04-12 02:37:29

标签: ruby-on-rails

我不太确定我是否正确地问这个问题,但这基本上就是我所拥有的:

#models/chapter.rb
class Chapter < ActiveRecord::Base
    has_many :pages
end

#models/page.rb
class Page < ActiveRecord::Base
   belongs_to :chapter
end

如何选择所有包含页面的章节?例如,如果有20章,其中只有10章实际上有页面,那么我可以通过简单的方式执行以下操作:Chapter.where(<where pages exist>)(当然使用正确的代码)?

1 个答案:

答案 0 :(得分:1)

INNER加入将确保您只获得包含分页的章节。

Chapter.joins(:pages)

如果章节有多个关联的页面,您将获得重复项。要删除它们,请使用uniqdistinct

Rails 4

Chapter.joins(:page).distinct

Rails 3

Chapter.joins(:page).uniq