will_paginate causing SystemStackError on has_many :through associations
Reported by Patrick | May 2nd, 2008 @ 02:19 PM
On edge rails (commit 64092de25727c1943807bf5345107d90428135a0 if that helps), using latest will_paginate. Added named_scopes to my Product model which are working GREAT so far. However, I'm getting the following error when I call any methods on a has_many :through collection. For instance, calling @product.categories.first results in
SystemStackError: stack level too deep
in .../vendor/plugins/will_paginate/lib/will_paginate/finder.rb:164:in `method_missing_without_paginate'
I've seen similiar complaints as these on older versions of Rails, but folks seemed to have resolved them. Any ideas?
Comments and changes to this ticket
-

E. James O'Kelly May 4th, 2008 @ 06:09 PM
I am experiencing the same result. Here is my pagination code that throws the issue. It is when dealing with a model that has a has_many :through association proxy. If you attempt to access that collection it throws the stack too deep exception in finder.rb of will_paginate.
class Mentor < User has_many :mentor_specialties, :dependent => :destroy has_many :specialties, :through => :mentor_specialties def self.page(page) paginate :include => [:specialties], :page => page, :per_page => 9 end def self.search(specialty, page) if specialty.blank? paginate :include => [:specialties], :page => page, :per_page => 9 else Mentor.find(:all, :include => [:mentor_specialties, :specialties], :conditions => ["mentor_specialties.specialty_id = ?", Specialty.find(specialty)]).paginate :page => page, :per_page => 9 end end endYou will notice this class inherits from another class that handles the activerecord, this is just an sti subclass.
-
Patrick May 6th, 2008 @ 10:41 AM
The latest checkout from Github (2.3.1) fixes this problem: http://github.com/mislav/will_pa...
Thanks guys!!
-
Mislav June 11th, 2008 @ 05:13 AM
- → State changed from new to resolved
- → Assigned user changed from Chris Wanstrath to Mislav
Please Login or create a free account to add a new comment.
You can update this ticket by sending an email to from your email client. (help)
Create your profile
Help contribute to this project by taking a few moments to create your personal profile. Create your profile »
