如何通过与 has_many 的关联来排序记录

How to order records by associaction with has_many

我有两个表,作者和书籍,书籍有出版日期,我想按作者最后一本书出版的日期排序,我正在这样做 includes(:books).where(blablabla).order('books.published_date DESC') 但它打破了 kaminari 的分页(每页 8 条记录,要显示 9 条),我在第一页上得到正确的记录,但在第二页上我从第一页得到前两条记录加上正确的记录。

试试这个:-

Author.includes(:books).where(blablabla).order('books.published_date DESC')

更新 1:-

@authors = Author.includes(:books).where(blablabla).order('books.published_date DESC')
@authors = @authors.page(params[:page)

希望这对您有所帮助!!

您可能想看看 Yap. You can define an alias for books.published_date and sort by that alias. See the example

User.joins(:team).paginate(sort: {team: :asc}) # would sort by team.name

如果您还需要访问它的任何属性以使用预先加载,请使用 .includes(:team)