使用will_paginate时关联的Rails模型的顺序不正确

时间:2011-07-25 12:29:03

标签: ruby-on-rails ruby pagination will-paginate 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并将使用1.6.2。

2 个答案:

答案 0 :(得分:0)

在Rails 3中,我认为您可以在分页调用之前将顺序移动到:

forum.topics.includes(:posts).order("posts.created_at DESC").paginate()

答案 1 :(得分:0)

请勿在中使用方括号:include
同时添加:per _ page 参数:

forum = Forum.find(3)
forum.topics.paginate(
        :per_page => 5,
        :page     => page,
        :include  => :posts,
        :order    => "posts.created_at DESC")