检查递增数字的顺序列表是否缺少任何数字

时间:2014-06-10 15:56:48

标签: ruby-on-rails ruby ruby-on-rails-4

Category有很多Post

某个类别中的所有帖子都有position属性,从数字1开始,最后一个数字应该是该类别的总帖子数。

如何最有效地检查位置编号的递增列表是否没有任何重复或失误?

2 个答案:

答案 0 :(得分:3)

使用each_cons

array = @posts.pluck(:position)
array.sort.each_cons(2).all? { |x,y| y == x + 1 }

如果它们没有以相等的步长递增或包含重复项,则返回false

答案 1 :(得分:0)

你可能应该将这种工作卸载到acts as list宝石上,它会完成你所追求的目标。

至于获取'总帖数',不要依赖某个职位,问你的数据库! @category.posts.count