我的分页调用中出现了重复的条目。
代码如下:
@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 "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只出现一次。
我一整天都在努力,所以可以快速回复更新您可能需要的任何信息。我很困惑。
答案 0 :(得分:12)
您的评价中有重复的评分(例如:4,4,4,4,3,3,3,3等)。在关系的情况下,对于2个不同的查询,不保证结果相同。您可以通过在id
上添加辅助排序来解决此问题。这将保证整个查询的排序顺序,并且您不会在不同的页面上重复:
me.reviews.order(:rating, :id).paginate(...)