【问题标题】:Getting Ruby error "You cannot call create unless the parent is saved"出现 Ruby 错误“除非保存父级,否则无法调用创建”
【发布时间】:2026-01-24 07:35:01
【问题描述】:

我已经阅读了几个资源,但没有找到答案。我有以下代码行,它返回“除非保存父级,否则您不能调用创建”:

      test.entries.create!({
        :date => date,
        :volume => 15
      })

在这行代码之上,我有这个:

  1.upto(5) do |i|
    test = Test.create(
      :name => "test #{i}"
    )

这两个脚本都封装在一个大循环中。所以脚本会创建test,然后使用test.entries.create!test 上创建一个条目。

但是,由于尚未保存父级,脚本失败了。我的理解是.create!.new.save,所以应该保存初始的test。我也尝试在错误之前手动输入test.save,但没有成功。有什么想法吗?

【问题讨论】:

  • 第二个代码块中的test 是什么。你是说Test.create?此外,是否有任何验证可能阻止 save 发生?尝试将 create! 添加到 test.create 中,以便在出现任何错误时引发异常。
  • 我的意思确实是Test.create。添加创建!实际上给了我更多的信息。我最初的代码失败了,我不知道,我应该可以从这里拿走它。随时将您的评论作为答案。谢谢!

标签: ruby-on-rails ruby rake


【解决方案1】:

您的第二个代码块中的测试内容。你的意思是Test.create?此外,是否有任何验证可能会阻止保存发生?

尝试添加创建!改为 test.create ,因此如果有任何错误,它会引发异常。

【讨论】:

    最近更新 更多