Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails rails分页重复条目_Ruby On Rails_Ruby On Rails 3_Pagination_Will Paginate - Fatal编程技术网

Ruby on rails rails分页重复条目

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

我在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 "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小时-听起来好像是休息时间了!谢谢有一段时间,我被困在一个类似的问题上。