Ruby Forum Ruby on Rails > Hitting unknown error with "can't dup NilClass"

Posted by tonymocha (Guest)
on 21.07.2009 00:37
(Received via mailing list)
Hi,

My system has been encounter this problem, and I couldn't find
solution after debugging. My scenario is stated below:

class user
   has_many :posts
   has_many :comments
end

class post
  belongs_to :user
  has_many :comments, :as => :commentable
end

class comment
  belongs_to :post
  belongs_to :user
end

For this case, I am trying to retrieve each post's comment together
with submitter username and I write as below:

class PostsController<ApplicationController
  def show
      raise @post.comments.first.user.inspect
  end
end

While the first time I run this script, it works fine. But, after I
hitting a refresh, it hits following problem "can't dup NilClass". It
is repeats the same for everytime i restart mongrel, working for the
first time and failed for the rest.

I append the application error log as below:
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:2189:in `dup'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:2189:in `scoped_methods'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:2193:in `current_scoped_methods'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:2183:in `scope'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:1548:in `find_every'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:1588:in `find_one'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:1574:in `find_from_ids'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
base.rb:616:in `find'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
associations/belongs_to_association.rb:44:in `find_target'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
associations/association_proxy.rb:240:in `load_target'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
associations/association_proxy.rb:112:in `reload'
/opt/local/lib/ruby/gems/1.8/gems/activerecord-2.3.2/lib/active_record/
associations.rb:1231:in `user'

Need some help for this. Thanks in advance.
Posted by dapi (Guest)
on 29.07.2009 13:44
(Received via mailing list)
Found solution - Use "unloadable" for these classes - 
http://strd6.com/?p=250
Posted by dapi (Guest)
on 29.07.2009 13:44
(Received via mailing list)
I've such problem. First time it works fine. But next time it gets
error "can't dup NilClass"