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?
@core_routers = CoreRouter.find(:all, :include => {:ports => :addresses})
(it's either that or...)
:include => :ports => :addresses)
I can never remember as well I've never actually done it