在不同表上保存条目有时会失败

问题描述 投票:0回答:1

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

目前,我当前的解决方案有时可以工作,但发生的情况是,对于在表B上创建条目来说,必须使用id,而我的猜测是表A上的条目尚未保存当我尝试在表B上创建新条目时。

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

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

  type Types::TaskType

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

    TaskOrganization.create!(
      task_id: args[task.id]
      organization: args[:organization]
    )
  end
end
ruby-on-rails ruby database graphql
1个回答
0
投票

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

accepts_nested_attributes_for :task_organization

如果是一对多,则:task_organizations

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

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

尝试一下!

© www.soinside.com 2019 - 2024. All rights reserved.