我正在使用rails 2.3.5和ruby 1.8.7.我正在建立一个简单的TODO经理.我拥有属于用户的任务,用户有很多任务.
我正在使用acts_as_taggable_on_steroids插件来标记任务以及restful_authentication plugin注册和用户管理.
我在索引操作的视图中得到一个奇怪的错误,上面写着"无法复制NilClass".这是控制器代码 -
@tasks = current_user.tasks
Run Code Online (Sandbox Code Playgroud)
当我@tasks在视图上迭代时发生错误.那是我的时候@tasks.each do |task|
现在我用这个替换控制器代码
@tasks = Task.find(:all, :conditions => {:user_id => current_user.id})
Run Code Online (Sandbox Code Playgroud)
这实际上是获取相同的记录.这仅在开发模式下发生.我猜这与缓存或加载有关.
可能有什么不对?我是第一次面对这个问题.
编辑
好的,这绝对是一个缓存问题.如果我
config.cache_classes = true在production.rb中生成,生产模式中也会出现相同的错误.但是我现在如何解决这个问题呢?因为我不想为模型/控制器中的每个更改重新加载服务器.
编辑
这是我的用户模型的样子
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
Run Code Online (Sandbox Code Playgroud)
这就是Task模型的样子.
class Task < ActiveRecord::Base
belongs_to :bin
belongs_to :project
belongs_to :user
acts_as_taggable
def …Run Code Online (Sandbox Code Playgroud)