davekaro
davekaro

Reputation: 6441

Understanding will paginate scopes/relations

Why does Post.page(1).total_pages result in:

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

but

Post.scoped.page(1).total_pages

works fine. Curiously,

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

works fine. I looked at the code on Github ( https://github.com/mislav/will_paginate/blob/master/lib/will_paginate/active_record.rb ) and I can see why paginate works (because it calls limit first... which returns an active record relation, much like scoped does). I have a feeling it has something to do with this code

rel = scoped.extending(RelationMethods)

I guess I don't understand the difference between these the active record relation that limit returns versus scoped.extending(RelationMethods). Any ideas?

Upvotes: 3

Views: 799

Answers (1)

davekaro
davekaro

Reputation: 6441

This only happens when using the rails_admin gem. It works fine in a fresh Rails 3.1.1 app with will_paginate 3.0.2.

Rails admin is probably doing something to the page method, though I'm not sure what exactly.

Upvotes: 1

Related Questions