理解将分页范围/关系

时间:2011-10-28 19:42:27

标签: ruby-on-rails ruby ruby-on-rails-3 will-paginate

为什么Post.page(1).total_pages会导致:

Post.page(1).total_pages
undefined local variable or method `total_pages' for #<ActiveRecord::Relation:0x00000006a95230>

但是

Post.scoped.page(1).total_pages

工作正常。奇怪的是,

Post.paginate(:page => 1).total_pages

工作正常。我查看了Github上的代码(https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/active_record.rb),我可以看到为什么paginate工作(因为它首先调用limit ...它返回一个活动的记录关系,就像scoped一样)。我觉得它与这段代码有关

rel = scoped.extending(RelationMethods)

我想我不明白这些限制返回的活动记录关系与scoped.extending(RelationMethods)之间的区别。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

仅在使用rails_admin gem时才会发生这种情况。它在带有will_paginate 3.0.2的新Rails 3.1.1应用程序中运行良好。

Rails管理员可能正在对页面方法做些什么,虽然我不确定究竟是什么。