Issue w/ Eager Loading

Paul Taylor
Tue, 12 Jun 2007 15:14:38 -0000

Hi,

I have a rails app that uses these models:

class CoreRouter < ActiveRecord::Base
  has_many :ports
end

class Port < ActiveRecord::Base
  belongs_to :core_router
  has_many :addresses
end

class Address < ActiveRecord::Base
  belongs_to :port
end

I have one main list page that shows all CoreRouters, the associated
ports and the associated addresses.  The problem is that I now have over
400 addresses and I''m seeing over 400 queries when I generate this
page,
taking about 10 seconds to load.  I thought an answer may be Eager
Loading:

@core_routers = CoreRouter.find(:all, :include => [ :ports, :addresses
])

But that fails:

ActiveRecord::ConfigurationError (Association named
''addresses'' was not
found; perhaps you misspelled it?):

I''m assuming this is because the CoreRouter class doesn''t have
a direct
association with the Address class.

How can I get it to eagerly load the addresses that are associated with
the ports?