Can't dup NilClass on association methods

ruby, ruby-on-rails

Solution

Got it.

From here,

Some of the classes inherited or included in your engine controllers may fail to get unloaded and cause trouble after the first request to your system.

For me, it was because I had a file in the `lib` that was monkey patching User model and the User model class in this file was not getting cached I suppose.

Calling `unloadable` in that class in the lib folder did the trick. So my lib file looks like this

class User < ActiveRecord::Base
  unloadable
  # stuff...
end

Thanks anyways.

Problem

I'm using rails 2.3.5 and ruby 1.8.7. I'm building a simple TODO manager. Where I have tasks that belong to a user and a user has many tasks. I'm using `acts_as_taggable_on_steroids` plugin for tagging tasks and `restful_authentication plugin` for registration and user management. I'm getting a weird error that reads "Can't dup NilClass" on the view of index action. This is what the controller code is - ``` @tasks = current_user.tasks ``` The error occurs when I'm iterating over `@tasks` on the view. That is when I do `@tasks.each do |task|` Now when I replace the controller code with this ``` @tasks = Task.find(:all, :conditions => {:user_id => current_user.id}) ``` Which is actually fetching the same records. This happen only in development mode. I am guessing this has something to do with caching or loading. What could be wrong? I'm facing this issue for the first time. EDIT Okay, this is definitely a caching issue. If I make `config.cache_classes = true` in production.rb, the same error occurs in production mode as well. But how do I fix that now? Because I don't want to be reloading the server for every change I make in models/controllers. EDIT Here is how my User model looks like ``` class User < ActiveRecord::Base has_many :tasks has_many :projects # There are some validations and standard methods that resful authentication # provides that I am not showing here end ``` And this is how the Task model looks like. ``` class Task < ActiveRecord::Base belongs_to :bin belongs_to :project belongs_to :user acts_as_taggable def tag_list super.join(', ') end end ``` Task controller's index method looks like this ``` def index @tasks = current_user.tasks respond_to do |format| format.html # index.html.erb format.xml { render :xml => @tasks } end end ``` Hope this helps.

Original source