我是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
假设Task
和TaskOrganization
之间具有一对一的关联,在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
尝试一下!