Very odd NoMethodError/stack overflow


#1

I’m getting this very weird error and I can’t figure out what the
problem is. I’m using acts_as_commentable. Basically, I have a partial
with this code in it:

<%= link_to comment.user.login, profile_path(User.find (comment.user_id).profile) %>
<%= comment.comment %>

and here’s the code that calls the partial:

<% @comments.each do |comment| %>
<%= render :partial => ‘partials/comment’, :locals => {:comment =>
comment} %>
<% end %>

profile_path(User.find(comment.user_id).profile) is the hack I’ve had
to do to avoid this problem which is weird. All users have a profile,
so they are accessible by user.profile. I get the stack overflow error
when I do comment.user.id, but accessing comment.user.login or any
other attribute works fine. When I do comment.user.profile I get the
NoMethodError. I’ve checked over and over and all associations are in
place…nothing seems wrong to me, yet this error won’t go away. What
could be the problem? :frowning:


#2

profile_path(User.find(comment.user_id).profile) is the hack I’ve had
to do to avoid this problem which is weird. All users have a profile,
so they are accessible by user.profile. I get the stack overflow error
when I do comment.user.id, but accessing comment.user.login or any
other attribute works fine. When I do comment.user.profile I get the
NoMethodError. I’ve checked over and over and all associations are in
place…nothing seems wrong to me, yet this error won’t go away. What
could be the problem? :frowning:

You could start by showing the models that seem to be causing the
problem :slight_smile:

Fred


#3

Quoting Mike C removed_email_address@domain.invalid:

  <dd><%= comment.comment %></dd>

profile_path(User.find(comment.user_id).profile) is the hack I’ve had
to do to avoid this problem which is weird. All users have a profile,
so they are accessible by user.profile. I get the stack overflow error
when I do comment.user.id, but accessing comment.user.login or any
other attribute works fine. When I do comment.user.profile I get the
NoMethodError. I’ve checked over and over and all associations are in
place…nothing seems wrong to me, yet this error won’t go away. What
could be the problem? :frowning:

I’ve found model.id problematic. I now always use model[:id] and have
had
fewer problems, none related to ambiquities around object ID versus
record ID,
etc.

Jeffrey


#4

class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true

NOTE: install the acts_as_votable plugin if you

want user to vote on the quality of comments.

#acts_as_voteable

NOTE: Comments belong to a user

belongs_to :user

end

class Story < ActiveRecord::Base
acts_as_commentable
acts_as_taggable_on :tags
has_many :cores
belongs_to :user

validates_presence_of :title
validates_presence_of :description
validates_presence_of :rules
validates_length_of :title, :within => 3…50
end

class User < ActiveRecord::Base

has_many :stories
has_many :cores
has_many :comments
has_one :profile

end


#5

Thanks. That fixed that problem…but the other problem still exists. :
(


#6

With the help of a friend, I’ve found what’s causing the error. In the
will_paginate plugin under tests/fixtures is a user.rb class defined
as class User ActiveRecord::Base. Rails was using that one instead of
one in my app/model. My new question is, why was it doing this? It
shouldn’t have loaded that one, right?