Ruby on rails 是否包含重新订购结果

Ruby on rails 是否包含重新订购结果,ruby-on-rails,activerecord,will-paginate,Ruby On Rails,Activerecord,Will Paginate,Rails 2.3.8+将取代2.3.14 我有Product和ProductReview两种模型 产品 has_many :product_reviews, :dependent => :destroy named_scope :most_recently_reviewed, :order => 'product_reviews.created_at desc', :include => [:product_reviews] ProductReview belongs_to

Rails 2.3.8+将取代2.3.14

我有Product和ProductReview两种模型

产品

has_many :product_reviews, :dependent => :destroy
named_scope :most_recently_reviewed, :order => 'product_reviews.created_at desc', :include => [:product_reviews]
ProductReview

belongs_to :product, :counter_cache => true
运行包含和不包含分页的最基本查询将以完全不同的顺序返回项

Product.most_recently_reviewed.collect{|p| p.id }[0,9]
 => [1660, 1658, 2374, 578, 1595, 135, 531, 550, 1511]

Product.most_recently_reviewed.paginate(:page => 1, :per_page => 40).collect{|p| p.id }[0,9]
 => [1660, 2374, 578, 1711, 1855, 1730, 1668, 1654, 2198]
将每页扩展到大于产品数量的数字会导致paginate返回正确的结果:

Product.most_recently_reviewed.paginate(:page => 1, :per_page => 1000).collect{|p| p.id }[0,9]
=> [1660, 1658, 2374, 578, 1595, 135, 531, 550, 1511]

有什么建议吗?谢谢。

分页的限制可能正应用于连接的结果,这些结果是具有多个产品评论数的行。除了将范围条件移动到分页调用中(然后可以将分页调用移动到命名范围中),我还没有找到更好的解决方案。命名作用域似乎无法与will_paginate很好地协同工作