Неверный порядок связанной модели 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.


person Alex    schedule 25.07.2011    source источник
comment
Вы пробовали включать темы в разбивку на страницы?   -  person jaydel    schedule 25.07.2011


Ответы (2)


В Rails 3, я думаю, вы можете переместить порядок до вызова paginate:

forum.topics.includes(:posts).order("posts.created_at DESC").paginate()
person DGM    schedule 25.07.2011
comment
К сожалению, используя Rails 2.3.9. Вы знаете, как этого добиться с помощью Rails 2? - person Alex; 25.07.2011

Не используйте квадратные скобки в :include.
Также добавьте параметр :per_ page:

forum = Forum.find(3)
forum.topics.paginate(
        :per_page => 5,
        :page     => page,
        :include  => :posts,
        :order    => "posts.created_at DESC")
person sfate    schedule 25.07.2011
comment
Спасибо, но я боюсь, что эти изменения не решили проблему с заказом - person Alex; 26.07.2011