Неправильный порядок связанной модели Rails при использовании will_paginate
У меня проблемы с заказом с помощью плагина will_paginate. Вот мои модели
Форум
class Forum < ActiveRecord::Base
has_many :topics, :dependent => :destroy
has_many :posts, :through => :topics
Тема
class Topic < ActiveRecord::Base
belongs_to :forum, :counter_cache => true
has_many :posts, :dependent => :delete_all
Сообщение
class Post < ActiveRecord::Base
belongs_to :topic, :counter_cache => true
belongs_to :user
Я пытаюсь получить темы, которые имеют самые последние сообщения. Следующее работает правильно:
forum = Forum.find(3)
forum.topics.all(:include => [:posts], :order => "posts.created_at DESC")
Но при введении нумерации страниц (используя плагин will_paginate) порядок указывается неверно.
forum = Forum.find(3)
forum.topics.paginate(:include => [:posts], :order => "posts.created_at DESC", :page => page)
Кто-нибудь знает, почему использование плагина will_paginate может отрицательно повлиять на порядок?
Я использую Rails 2.3.9 и will_paginate 1.6.2.
2 ответа
В Rails 3, я думаю, вы можете перенести порядок до вызова paginate:
forum.topics.includes(:posts).order("posts.created_at DESC").paginate()
Не используйте квадратные скобки в : include.
Также добавьте : для параметра _ страницы:
forum = Forum.find(3)
forum.topics.paginate(
:per_page => 5,
:page => page,
:include => :posts,
:order => "posts.created_at DESC")