Forum: Ruby on Rails Help with Eager Association

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Kenneth L. (Guest)
on 2006-02-14 03:21
(Received via mailing list)
I've gotten eager associations to work before, but for some reason
this isn't working out for me this time.  I've been scratching my head
but can't quite figure out the nuances of what works and what doesn't
work.

I've got 3 models: profile, widget_configuration and widgets

profile.rb --
has_many :widget_configurations

widget_configuration.rb -
belongs_to :profile
belongs_to :widgets

widgets.rb -
has_many :widget_configurations

So in otherwords, widget_configuration is a sort of 'rich' m-to-m
association table containing foreign keys to both profiles and
widgets.  The table looks like this:
widget_configurations
------------------------------
profile_id (FK)
widget_id (FK)

--------------------------
So now what I'm trying to do is this:
(assuming @profile is an instance variable w/ a profile)
@profile.widget_configurations.find :all, :include => [:widget]

I end up getting this error:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.first

This shows up in the log file:

  WidgetConfiguration Columns (0.000256)   SHOW FIELDS FROM
widget_configurations
  Widget Columns (0.000252)   SHOW FIELDS FROM widgets


NoMethodError (You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occured while evaluating nil.first):
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations.rb:924:in
`generate_primary_key_table'
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations.rb:849:in
`find_with_associations'
    /usr/local/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/base.rb:395:in
`find'
    /app/controllers/home_controller.rb:10:in `index'
    /usr/local/lib/ruby/gems/1.8/gems/actionpack-1.11.2/lib/action_controller/base.rb:853:in
`send'
    /app/controllers/home_controller.rb:10:in `index'
... etc.. the rest traces back to the dispatch.cfgi...

I'm about this close to just doing a find_by_sql and handling the
association myself, but I'd rather do it using the built-in
mechanisms.

Any help?
This topic is locked and can not be replied to.