繁体   English   中英

如何使用devise为nil:NilClass修复未定义的方法“电子邮件”

[英]How do I fix undefined method `email' for nil:NilClass with 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

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

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

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

因此,我知道除了创建该项目的用户之外,其他所有内容都在保存。 如果我删除.merge! 在我的create方法中,并分两步进行,它工作得很好,就像这样:

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

为什么要使用合并! 将无法正常工作? 我本以为将用户合并到对象中会很好。 正确的(或首选的)方法是什么?

谢谢

我知道了。 这是一个大规模任务问题。 我的代码中有attr_accessible :title, :description, :account_number, :account_executive ,将其禁用以允许批量分配,并且工作正常。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM