Very odd NoMethodError/stack overflow....

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:

<div id="<%= '#{comment.commentable_type}_comment_# {comment.commentable_id}' %>" class="comment">   <dl>     <dt><%= link_to comment.user.login, profile_path(User.find (comment.user_id).profile) %></dt>       <dd><%= comment.comment %></dd>   </dl> </div>

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:

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

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

Quoting Mike C <snibble@gmail.com>:

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:

<div id="<%= '#{comment.commentable_type}_comment_# {comment.commentable_id}' %>" class="comment">   <dl>     <dt><%= link_to comment.user.login, profile_path(User.find (comment.user_id).profile) %></dt>       <dd><%= comment.comment %></dd>   </dl> </div>

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:

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

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

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?