首页 > 解决方案 > 如何省略没有孩子的父母

问题描述

我省略了没有孩子的父母并在视图中这样做:

 <% @books.each do |b| %>
 <% if b.comments.empty? %>
 <% else %>
.....

我的控制器:

@pagy, @books = pagy_countless(Book.where(user_id: current_user.id).includes(:comments).order("comments.created_at DESC").group("comments.created_at, books.id"), items:10 )

我正在使用 pagey gem。

问题是分页的第一页是空的,所有的父母和他们的孩子都显示在第二页上。这是因为我从视图中省略了没有孩子的父母,并且有足够多的这样的父母出现在第一页完全空白的情况下。

如何从控制器中省略没有孩子的父母?

标签: ruby-on-railsruby

解决方案


如果你只想获取连接表中匹配的记录,你想使用INNER JOIN

@books = Book.joins(:comments)

.includes, .eager_load,.left_join.preload创建一个OUTER JOIN.

如果你想使用 INNER JOIN 又避免那些讨厌的 N+1 查询,你可以与or.joins一起使用:.includes.eager_load

@books = Book.joins(:comments)
             .includes(:comments)

推荐阅读