具有关系依赖关系的Rails事务



我在Rails 3中遇到了一些事务问题。基本上我有两个模型(项目和会员(

@project = Project.new(params[:project])
@project.user = current_user
membership = Membership.new
membership.project = @project
Project.transaction do
  begin
    @project.save!
    membership.save!
  rescue
    flash[:notice] = "There was an error creating your project."
  end
end

我正在创建一个新项目,并试图立即为该项目创建成员资格(成员资格实际上也和用户模型n:m有关系(。

现在我正在启动一个事务来保存项目和事务中的成员资格。问题是我得到了一个例外:

验证失败:项目不能为空

app/controllers/projects_controller.rb:64:在block in create'
app/controllers/projects_controller.rb:61:in
中创建

第61行为Project.transaction do

好吧,我自己想好了。Membership模型验证以下项的存在:project_id。在将项目保存到事务中之前,我正在设置membership.project。之后,我试图保存成员身份,但由于项目是在数据库中创建之前设置的,所以:project_id为nil。

为了修复这个代码,我不得不像这样重新排列:

membership = Membership.new
Project.transaction do
  begin
    @project.save!
    membership.project = @project
    membership.save!
  rescue
    flash[:notice] = "There was an error creating your project."
  end
end

请注意,在保存项目(并自动生成ID(后,@project的分配现在是

相关内容

  • 没有找到相关文章

最新更新