# Rails 2.2 - Eager loading not working?

**URL:** <https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270>\
**Category:** Rails\
**Created:** [December 23, 2008, 7:00pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270 "2008-12-23T19:00:28Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Adriano](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@Adriano](https://www.ruby-forum.com/u/Adriano)\
**Post date:** [December 23, 2008, 7:00pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270/1 "2008-12-23T19:00:28Z")

</div>

Hi,

I’m using Rails 2.2 with SQlite. Eager loading doesn’t seem to be  
working, instead of a join two selects are executed:

class Category \< ActiveRecord::Base  
has\_many :tools  
end

class Tool \< ActiveRecord::Base  
belongs\_to :category  
end

> > Tool.find(:all, :include =\> :category)  
> > Tool Load (53.1ms) SELECT \* FROM “tools”  
> > Category Load (6.0ms) SELECT \* FROM “categories” WHERE  
> > (“categories”.“id” = 1)

> > Category.find(:all, :include =\> :tools)  
> > Category Load (1.9ms) SELECT \* FROM “categories”  
> > Tool Load (8.8ms) SELECT “tools”.\* FROM “tools” WHERE  
> > (“tools”.category\_id IN (1,2,3,4,5,6,7,8,9))

Am I missing something?

Thanks,

–  
Adriano

---

<div class="post-metadata">

**Author:** ![Adriano](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@Adriano](https://www.ruby-forum.com/u/Adriano)\
**Post date:** [December 23, 2008, 7:01pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270/2 "2008-12-23T19:01:03Z")

</div>

On Dec 23, 5:27 pm, Adriano [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> Am I missing something?

That’s how it works in rails 2.1 and above

Fred

---

<div class="post-metadata">

**Author:** ![Adriano](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@Adriano](https://www.ruby-forum.com/u/Adriano)\
**Post date:** [December 23, 2008, 7:11pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270/3 "2008-12-23T19:11:01Z")

</div>

On Dec 23, 4:00 pm, Frederick C. [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid)  
wrote:

> On Dec 23, 5:27 pm, Adriano [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:
> 
> > Am I missing something?
> 
> That’s how it works in rails 2.1 and above

Ah, thanks.

I guess I didn’t read the release notes carefully (I’m curious to know  
the rationale behind the change).

–  
Adriano

---

<div class="post-metadata">

**Author:** ![Adriano](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@Adriano](https://www.ruby-forum.com/u/Adriano)\
**Post date:** [December 23, 2008, 7:22pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270/4 "2008-12-23T19:22:45Z")

</div>

On 23 Dec 2008, at 18:09, Adriano wrote:

> I guess I didn’t read the release notes carefully (I’m curious to know  
> the rationale behind the change).

Generally, small simpler querys often end up being easier to handle.  
join based include was also slow if you included two has\_many  
associations at the same time (because the result set would  
effectively have the product of those two associations). Code is quite  
a bit simpler too.

Fred

---

<div class="post-metadata">

**Author:** ![Adriano](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/a/c37758/32.png) [@Adriano](https://www.ruby-forum.com/u/Adriano)\
**Post date:** [December 23, 2008, 7:49pm UTC](https://www.ruby-forum.com/t/rails-2-2-eager-loading-not-working/156270/5 "2008-12-23T19:49:40Z")

</div>

On Dec 23, 2008, at 1:22 PM, Frederick C. wrote:

> > 
> 
> Fred
> 
> > –  
> > Adriano
> > 
> > >

Because when you get up to an eager load of something like:

```
 find(:all, :include => { :address => [:state, :country],
        :school => { :admin_contact => { :address =>

```

[:state, :country]}}},  
:conditions =\> { :type =\> ‘ReceivingAccount’, :aasm\_state =\>  
‘in\_production’ })

(yes, this is real)  
The resulting set of queries is much more efficient that the huge  
single-query equivalent.

-Rob

Rob B. [http://agileconsultingllc.com](http://agileconsultingllc.com)  
removed\_email\_address@domain.invalid
