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.