Can only traverse a polymorphic association in one direction

Hi all, I'm working on a polymorphic association and I've run into a bit of a
stumbling block. I only seem to be able to traverse the relationship in one
direction and not the other. This is what my code looks like:

class NodeEntry < ActiveRecord::Base
  belongs_to :node, :polymorphic => true

class Location < ActiveRecord::Base
    attr_accessor :name
    has_one :node_entry, :as => :node
    validates_presence_of :country, :region, :name

class Meter < ActiveRecord::Base
  attr_accessor :name, :parent_id
  has_one :node_entry, :as => :node
  validates_presence_of :meter_identifier, :type_of_meter

class MeterGroup < ActiveRecord::Base
  has_one :node_entry, :as => :node

When I create a new location or meter I use the following code:
@location =[:location])
@location_node = => params[:location][:name])
@location_node.node = @location

After loading a location or meter object from the database, when I attempt
to do a location.node I get an error saying the object doesn't have that
method. When I load a node entry object I have no problem accessing its
node and I get the correct class back.

I can get around this by doing a simple query such as:
NodeEntry.first(:conditions => "node_id = #{} and node_type =

but I had assumed active record should be doing this for me under the
covers. Have I made a mistake somewhere or is this the expected behavior of
polymorphic associations?

The has_one is still named what you've specified (:node_entry in this
case), the polymorphic stuff doesn't change that...

So it'd be:




--Matt Jones

Thanks for taking the time to read through my code and spot the obvious, I
guess too much coffee and too little sleep is not the best recipe.

Matt Jones wrote: