我不太确定我是否正确地问这个问题,但这基本上就是我所拥有的:
#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>)
(当然使用正确的代码)?
答案 0 :(得分:1)
INNER加入将确保您只获得包含分页的章节。
Chapter.joins(:pages)
如果章节有多个关联的页面,您将获得重复项。要删除它们,请使用uniq
或distinct
。
Rails 4
Chapter.joins(:page).distinct
Rails 3
Chapter.joins(:page).uniq