如何为nil修复未定义的方法`email':NilClass with devise

时间:2012-01-19 20:58:28

标签: ruby-on-rails ruby-on-rails-3 devise

我有点奇怪的问题。我有一个项目控制器,我正在创建一个与公司相关的新项目,由登录用户(current_user)创建,这是我的创建操作。

def create
  @project = @company.projects.build(params[:project].merge!(:user => current_user))
  #@project.user = current_user
  if @project.save
    #debugger
    flash[:notice] = "Project has been created."
    redirect_to [@company, @project]
  else
    flash[:alert] = "Project has not been created."
    render :action => "new"
  end
end

以上代码在重定向到项目显示页面时出现以下错误:

  

未定义的方法`email'代表nil:NilClass

%b
  Created by
  = @project.user.email # <-- errors, not sure why

所以除了创建该项目的用户之外,我知道其他一切都在保存。如果我删除.merge!在我的创建方法中,并分两步完成,它完全正常,如下所示:

def create
  @project = @company.projects.build(params[:project])
  @project.user = current_user
  ....

如何使用合并!不行吗?我原以为将用户合并到对象中会非常好。什么是正确(或首选)的方式?

由于

1 个答案:

答案 0 :(得分:0)

我已经弄清楚了。这是一个群众任务问题。我的代码中有attr_accessible :title, :description, :account_number, :account_executive,禁用它以允许批量分配,并且工作正常。