当前位置:  开发笔记 > 后端 > 正文

无法在关联方法上重复NilClass

如何解决《无法在关联方法上重复NilClass》经验,为你挑选了1个好方法。

我正在使用rails 2.3.5和ruby 1.8.7.我正在建立一个简单的TODO经理.我拥有属于用户的任务,用户有很多任务.

我正在使用acts_as_taggable_on_steroids插件来标记任务以及restful_authentication plugin注册和用户管理.

我在索引操作的视图中得到一个奇怪的错误,上面写着"无法复制NilClass".这是控制器代码 -

@tasks = current_user.tasks

当我@tasks在视图上迭代时发生错误.那是我的时候@tasks.each do |task|

现在我用这个替换控制器代码

@tasks = Task.find(:all, :conditions => {:user_id => current_user.id})

这实际上是获取相同的记录.这仅在开发模式下发生.我猜这与缓存或加载有关.

可能有什么不对?我是第一次面对这个问题.

编辑

好的,这绝对是一个缓存问题.如果我 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

这就是Task模型的样子.

class Task < ActiveRecord::Base
  belongs_to :bin
  belongs_to :project
  belongs_to :user

  acts_as_taggable

  def tag_list
    super.join(', ')
  end

end

任务控制器的索引方法如下所示

def index
  @tasks = current_user.tasks

  respond_to do |format|
    format.html # index.html.erb
    format.xml  { render :xml => @tasks }
  end
end

希望这可以帮助.



1> Chirantan..:

得到它了.

从这里开始,

继承或包含在引擎控制器中的某些类可能无法卸载并在第一次请求系统后导致问题.

对我来说,这是因为我有一个文件,lib猴子修补用户模型和这个文件中的用户模型类没有被缓存我想.

unloadable在lib文件夹中调用该类就可以了.所以我的lib文件看起来像这样

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

不管怎么说,多谢拉.

推荐阅读
贾志军
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有