我有点奇怪的问题。我有一个项目控制器,我正在创建一个与公司相关的新项目,由登录用户(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
....
如何使用合并!不行吗?我原以为将用户合并到对象中会非常好。什么是正确(或首选)的方式?
由于
答案 0 :(得分:0)
我已经弄清楚了。这是一个群众任务问题。我的代码中有attr_accessible :title, :description, :account_number, :account_executive
,禁用它以允许批量分配,并且工作正常。