我们在创建的新应用程序中遇到问题。 我们有两个模型:包和产品,一个包有很多产品。 我们需要创建一个可以批量创建包的 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/