Ruby 和一般编程的新手。到目前为止,我在找到任何问题的答案时都没有遇到任何问题,但找不到这个问题。
在我的应用程序中,Teams 控制器新建和创建操作正在跨多个关联模型创建多个新记录。其中一条记录未能创建,因为似乎较低的记录@pool_user
之前正在执行@department
,因此@department.id
为 nil 并且 email 不能为空。
为了测试,我删除了该@pool_user
行并将特定值插入:userid =>
under@competence
并按预期顺序执行,按预期创建所有记录。
我正在为用户模型使用设计,我怀疑它可能会首先影响它的初始化,但我似乎无法找到一种方法让它们以正确的顺序执行。
团队控制器.rb
def new
@team = Team.new
@department = Department.new
@competence = Competence.new
@pool_user = User.new
respond_to do |format|
format.html # new.html.erb
format.json { render json: @team }
end
end
def create
@team = Team.new(params[:team])
@department = @team.departments.build(:organization_id => User.current.organization_id, :team_id => @team.id)
@pool_user = @team.users.build(:email => @department.id).save(:validate => false)
@competence = @team.competences.build(:team_id => @team.id, :user_id => @pool_user.id)
respond_to do |format|
if @team.save
format.html { redirect_to @team, notice: 'Team was successfully created.' }
format.json { render json: @team, status: :created, location: @team }
else
format.html { render action: "new" }
format.json { render json: @team.errors, status: :unprocessable_entity }
end
end
end
随时纠正您在此处看到的任何其他不良做法或一般菜鸟动作。我只是想弄清楚为什么它没有按正确的顺序构建。谢谢。