Ruby on Rails Saturday, May 29, 2010

On May 27, 7:18 am, BarryOg <barryodrisc...@gmail.com> wrote:
> 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
>   acts_as_nested_set
>   belongs_to :node, :polymorphic => true
> end
>
> class Location < ActiveRecord::Base
>     attr_accessor :name
>     has_one :node_entry, :as => :node
>     validates_presence_of :country, :region, :name
> end
>
> class Meter < ActiveRecord::Base
>   attr_accessor :name, :parent_id
>   has_one :node_entry, :as => :node
>   validates_presence_of :meter_identifier, :type_of_meter
> end
>
> class MeterGroup < ActiveRecord::Base
>   has_one :node_entry, :as => :node
> end
>
> When I create a new location or meter I use the following code:
> @location = Location.new(params[:location])
> @location_node = NodeEntry.new(:name => params[:location][:name])
> @location_node.node = @location
> @location_node.save
>
> 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.  

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:

@location.node_entry

not

@location.node


--Matt Jones

--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.

No comments:

Post a Comment