У меня есть две таблицы, авторы и книги, у книг есть дата публикации, я хотел бы упорядочить авторов по дате их последней опубликованной книги, я делал это includes(:books).where(blablabla).order('books.published_date DESC')
, но это нарушает нумерацию страниц kaminari (8 записей на странице, 9 для отображения ), я получаю правильные записи на первой странице, но на второй странице я получаю первые две записи с первой страницы плюс правильную запись.
Как упорядочить записи по ассоциации с has_many
Ответы (2)
Вы можете взглянуть на Yap. Вы можете определить псевдоним для books.published_date
и сортировать по этому псевдониму. См. пример.
User.joins(:team).paginate(sort: {team: :asc}) # would sort by team.name
Используйте .includes(:team)
, если вам также нужно получить доступ к каким-либо его атрибутам, чтобы использовать нетерпеливую загрузку.
person
AmShaegar
schedule
05.12.2015
Попробуй это:-
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)
Надеюсь, это может быть полезно!
person
user3506853
schedule
01.12.2015
извините, пропустил часть заказа при копировании из редактора кода
- person JohnGood; 01.12.2015
так что это именно тот запрос, который я делаю, он работает хорошо, но не с каминари
- person JohnGood; 01.12.2015
с обновлением 1 я получаю правильные записи для первой страницы, но для второй я получаю две первые записи с первой страницы, а затем последнюю (правильную)
- person JohnGood; 01.12.2015