ruby-on-rails - 如何省略没有孩子的父母
问题描述
我省略了没有孩子的父母并在视图中这样做:
<% @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。
问题是分页的第一页是空的,所有的父母和他们的孩子都显示在第二页上。这是因为我从视图中省略了没有孩子的父母,并且有足够多的这样的父母出现在第一页完全空白的情况下。
如何从控制器中省略没有孩子的父母?
解决方案
如果你只想获取连接表中匹配的记录,你想使用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)
推荐阅读
- python - Tkinter:基于列表中位置的文本样式
- firebase - Flutter Firebase 身份验证 - 取消链接身份验证提供程序不会导致原始(匿名)用户
- reactjs - 类型属性依赖于另一个属性的返回类型
- html - 更改浏览器大小时网站混乱
- javascript - 使用 i18next 进行反应生产构建会导致翻译仅显示字符串
- reactjs - 将数据从 UseEffect 传递到 Chart.js 不起作用
- ios - 为什么我收到错误“类型‘PublicTableViewController’没有成员‘handleRefresh’’
- python - 计算与新列中平均值的差异
- sql-server - 从 SQL Server 2012 到 2008 R2 的 LoadData 问题将日期日期类型加载到日期时间数据类型列中
- java - Spring Boot 休息控制器错误消息始终为空