"Cannot convert String to Integer" after using association

So, I’ve written a partial that does some stuff with a given instance of
my class “entity”. Entity is ActiveRecord. I’m able to retrieve all
sorts of data from an @entity, until I do something like:

<% for @attribute in @entity.attributes %>


<%= render(:partial => ‘attribute’) %>

<% end %>

After which point, any attempt on my part to retrieve data from @entity
( for instance <%= @entity.id %> results in:

cannot convert String into Integer

The stack trace is:

c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations/association_proxy.rb:75:in
[]' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations/association_proxy.rb:75:insend’
c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations/association_proxy.rb:75:in
method_missing' c:/ruby/lib/ruby/gems/1.8/gems/activerecord-1.13.2/lib/active_record/associations/has_many_association.rb:90:inmethod_missing’
(eval):1:in id' #{RAILS_ROOT}/app/views/main/_entity.rhtml:27 #{RAILS_ROOT}/app/views/main/index.rhtml:30 #{RAILS_ROOT}/app/views/main/index.rhtml:29:ineach’
#{RAILS_ROOT}/app/views/main/index.rhtml:29

This is really starting to tick me off. I had a workaround in which I
retrieved all the important information before I used an association,
but that won’t let me retrieve more than one type of associated
information.

Help?

Brian,

Can you include the actual code for _entity.rhtml, given that’s where
your error is happening?

Cheers,

Pete Y.
http://9cays.com

<%= @entity.id.to_s %>

I’m betting something is broken in your attributes association. Can
you post your entity and attribute models, and the schemas for their
respective tables?

Mark Van H. wrote:

<%= @entity.id.to_s %>

Believe me, I tried that. Besides, you can’t even print out the id or
any text, no matter the format.

Below is the code of _entity.rthml. The line that starts to loop for
attributes will always fail. I hope someone finds something I missed.

<%= @entity.name %>
<div style="font-style: italic;  border-top: 1px gray solid; 

border-bottom: 1px gray solid">
Attributes

<% for @attribute in @entity.attributes %>
<%= render(:partial => 'attribute') %>
<% end %>
Relations
<% for @relation in @entity.relations %> <%= @relation.id %> <% end %>

Mark Van H. wrote:

<%= @entity.id.to_s %>

You could replace this line with <%= @entity.class.name %> and tell
us, what you get. #id is a method that returns the internal ruby id of
an object represented by an integer.

Maybe @entity is not an ActiveRecord…

Pete Y. wrote:

I’m betting something is broken in your attributes association. Can
you post your entity and attribute models, and the schemas for their
respective tables?

class Attribute < ActiveRecord::Base
belongs_to :entity
end

class Entity < ActiveRecord::Base
has_many :attributes
has_many :relations,
:class_name => “Relation”,
:foreign_key => “entity1_id”

has_many :incoming_relations,
:class_name => “Relation”,
:foreign_key => “entity2_id”
end

The schema is mundane. There’s a table for each model, with ids and
other fields. The data types of all those things are correct. I checked
to make sure the key field of Entity was an integer, and it is.

Bryan D. wrote:

has_many :attributes
other fields. The data types of all those things are correct. I checked
to make sure the key field of Entity was an integer, and it is.

Bryan, you have chosen a name that clashes with Rails naming.

An ActiveRecord instance uses an ‘attributes’ hash to hold the state of
its attributes, and this has public accessors (attributes, attributes=).

regards

Justin

Justin F. wrote:

Bryan D. wrote:

has_many :attributes
other fields. The data types of all those things are correct. I checked
to make sure the key field of Entity was an integer, and it is.

Bryan, you have chosen a name that clashes with Rails naming.

An ActiveRecord instance uses an ‘attributes’ hash to hold the state of
its attributes, and this has public accessors (attributes, attributes=).

regards

Justin

Hot damn. That would make sense, wouldn’t it. Guess I’ll have to rename.
Thanks.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs