Неправильный порядок связанной модели 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")
Другие вопросы по тегам