首页 > 解决方案 > 在不同的表上保存条目有时会失败

问题描述

我是 Rails 的新手,我想在表 A中保存一个条目,该表在创建完成后会生成一个新 id,我需要使用该新 id 在表 B上创建一个新条目。

目前,我当前的解决方案有时只能工作,发生的情况是 id 是在表 B上创建条目所必需的,我的猜测是,当我尝试在表上创建新条目时,表 A 上的条目尚未保存

下面是我用来完成上述行为的代码:

class Resolvers::CreateTask < GraphQL::Function
  argument :name, !types.String
  argument :organization, !types.String

  type Types::TaskType

  def call(_obj, args, ctx)  
    task = Task.create!(
      name: args[:name],
    )

    TaskOrganization.create!(
      task_id: task.id
      organization: args[:organization]
    )
  end
end

标签: ruby-on-railsrubydatabasegraphql

解决方案


Task假设您在和之间具有一对一关联TaskOrganization,在Task模型中,添加此行

accepts_nested_attributes_for :task_organization

如果它是一对多的复数形式,:task_organizations

然后在call上面的方法中执行此操作

def call(_obj, args, ctx)  
  task = Task.create!(
    name: args[:name],
    task_organization_attributes: { organization: args[:organization] }
  )
end

试试看!


推荐阅读