Ruby on rails rails分页重复条目
我在paginate呼叫中收到重复的条目 代码如下: @reviews=@user.reviews.paginate:page=>params[:page],:per_page=>5 当我在终端中运行它时,它返回重复的条目。以下是一个例子: 第1页:Ruby on rails rails分页重复条目,ruby-on-rails,ruby-on-rails-3,pagination,will-paginate,Ruby On Rails,Ruby On Rails 3,Pagination,Will Paginate,我在paginate呼叫中收到重复的条目 代码如下: @reviews=@user.reviews.paginate:page=>params[:page],:per_page=>5 当我在终端中运行它时,它返回重复的条目。以下是一个例子: 第1页: 1.9.3p327 :040 > me.reviews.paginate(:page => 1, :per_page => 5) Review Load (2.1ms) SELECT "reviews".* FROM "re
1.9.3p327 :040 > me.reviews.paginate(:page => 1, :per_page => 5)
Review Load (2.1ms) SELECT "reviews".* FROM "reviews" WHERE "reviews"."user_id" = 43 ORDER BY rating DESC LIMIT 5 OFFSET 0
(1.0ms) SELECT COUNT(*) FROM "reviews" WHERE "reviews"."user_id" = 43
=> [#<Review id: 319>, #<Review id: 322>, #<Review id: 318>, #<Review id: 323>, #<Review id: 313>]
第2页:
1.9.3p327 :045 > me.reviews.paginate(:page => 2, :per_page => 5)
Review Load (1.3ms) SELECT "reviews".* FROM "reviews" WHERE "reviews"."user_id" = 43 ORDER BY rating DESC LIMIT 5 OFFSET 5
(0.7ms) SELECT COUNT(*) FROM "reviews" WHERE "reviews"."user_id" = 43
=> [#<Review id: 313>, #<Review id: 324>, #<Review id: 315>, #<Review id: 310>, #<Review id: 312>]
请注意,这两次都会进行复查313
但是,当我运行me.reviews时,每个id只出现一次
我一直在这一整天的工作,所以可以快速响应更新与任何信息,你可能需要。我确实很困惑。您的评论中有重复的评分,例如:4,4,4,3,3,3等。如果是平局,则不保证两个不同查询的结果顺序相同。您可以通过在id上添加二级排序来解决此问题。这将保证整个查询的排序顺序,并且不同页面上不会有重复项:
me.reviews.order(:rating, :id).paginate(...)
你改变了我的生活。非常感谢。我调查了一下,我的审查模型是“评级描述”。我在上面加了“id”,现在一切都在流动。不过,还有一个后续问题:我不明白为什么会有重复的。我理解为什么会有无序的条目,因为某些条目按评级相等,但为什么会重复?这可能取决于您使用的数据库类型。我已经在带有限制和偏移的Postgres中看到了这一点,这就是Peru paginate所做的。您正在执行两个单独的查询。数据库不保证两个查询中的领带顺序相同。因此,在我上面的示例中,评级为3的评论可能在您第一次运行查询时位于第1页的第5位,而在第2次运行查询时位于第2页的第6位。谢谢。我已经做了12个小时了。这总是一个简单的解决办法,但要做到这一点需要一些经验,你显然已经做到了。谢谢,很乐意帮忙。12小时-听起来好像是休息时间了!谢谢有一段时间,我被困在一个类似的问题上。