I have written a patch[1] that addresses this issue, but it hasn't received much attention. I have also created a plugin[2] that makes eager loading work via pagination.
I wrote new tests to verify the changes I made in ActiveRecord, but I never wrote any tests for pagination... so it's great that you wrote some. Maybe we could get our patches reviewed as a pair.
Could someone please review this code? I've had a few people use the plugin that wraps up this patch and been happy with it...
Thanks,
Jeremy
[1] http://dev.rubyonrails.org/ticket/2597
[2] http://wiki.rubyonrails.org/rails/pages/Count+Limit+Associations+Plugin
On 1/25/06, Kevin Clark <[EMAIL PROTECTED]> wrote:
Here's the line of code that is now the bane of my existance:
@topic_pages, @topics = paginate(:topics, :include => :posts,
:order => 'posts.created_at asc')
So, grab topics (eager loading the posts) and then order the topics
based on the post created date.
This doesn't work because when paginate tries to count the records, it
-does- try to order them by posts.created_at but does not include
posts in the query.
I'd like to write some test cases and fix the bug, but interestingly
enough, there are no pagination tests in ActionPack. They just aren't
there. In fact, if you 'grep -r "paginate" *' in your rails directory,
you won't see any tests for pagination anywhere in the core.
I'm going to write the pagination tests I guess, since I need them now.
Unfortunately, I need an ActiveRecord connection in ActionPack in
order to test this. It seems that
test/active_record_assertions_test.rb needs AR as well, but the code
to connect is messy and localized to that file.
I've written a patch (http://dev.rubyonrails.org/ticket/3606)
extracting the ActiveRecord connection and fixture model loading (not
the data, which currently isn't loaded in ActionPack either) to a
helper class.
All tests pass (without modifications) except two. These two
assertions are that the company model (defined in AR/fixtures) should
error out when rating = 2. This is residual from changeset #4
(http://dev.rubyonrails.org/browser/trunk/actionpack/test/controller/active_record_assertions_test.rb?rev=4 )
so I've taken the liberty of writing a hacky setup/reset company
helper which is run in setup/teardown for the tests where it matters.
All tests now pass.
If anyone has widespread objections to this, please raise them ASAP.
I'd like to start writing pagination tests so I can fix my original
bug and want to base the connection code on my helper.
_______________________________________________
Rails-core mailing list
[email protected]
http://lists.rubyonrails.org/mailman/listinfo/rails-core
_______________________________________________ Rails-core mailing list [email protected] http://lists.rubyonrails.org/mailman/listinfo/rails-core
