ruby-on-rails - 在 ruby​​ 中批量创建具有嵌套属性的对象

标签 ruby-on-rails ruby

我们在创建的新应用程序中遇到问题。 我们有两个模型:包和产品,一个包有很多产品。 我们需要创建一个可以批量创建包的 Controller ,因此我们开始使用允许批量创建的 activerecord-import gem。但是问题是gem不允许使用嵌套属性来创建产品,这意味着我无法为每个包创建相应的产品。 有没有人遇到过类似的问题或有任何潜在的优雅解决方案?

Controller 的 JSON 类似于以下内容。

{
  packages: [
    {
      weight: 'x',
      products_attributes: [
        {
          code: x
        },
        {
          code: x
        }
      ]
    },
    {
      weight: 'y',
      products_attributes: [
        {
          code: y
        },
        {
          code: y
        }
      ]
    },
  ]
}

最佳答案

books = 10.times.map do |i|
  book = Book.new(name: "book #{i}")
  book.reviews.build(title: "Excellent")
  book 
end
Book.import books, recursive: true

您可以试试这个,迭代哈希,为包构建对象,并为每个包迭代产品,并构建分配给包对象的产品对象。 另一种方法 - 构建原始 SQL,但更难

关于ruby-on-rails - 在 ruby​​ 中批量创建具有嵌套属性的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69555467/

相关文章:

ruby-on-rails - 用于查找关联大学电子邮件地址的 Gem

jQuery 字符计数 onkeyup 在剩余 0 时显示 1 个字符

ruby-on-rails - 需要 Twitter 和 Facebook Gems 的推荐

ruby - 是否可以在 vagrant 插件中确定 VirtualBox 版本?

ruby-on-rails - 使用 Devise 将 SpreeCommerce 添加到现有应用程序

ruby - 展平嵌套的 json 对象

ruby-on-rails - Capistrano Rails部署后重新启动服务

ruby-on-rails - 将 Puma 与 Rails 应用程序结合使用

ruby-on-rails - sendgrid模板的电子邮件主题中无法使用特殊字符的编码

ruby - 用完 Net::HTTP 的套接字连接