我们正在创建的一个新应用程序遇到了一个问题。我们有两种模式:包装和产品,一个包装有很多产品。我们需要创建一个可以批量创建包的控制器,所以我们开始使用activerecord-import gem,它允许批量创建。然而,问题是gem不允许使用嵌套属性来创建产品,这意味着我不能为每个包创建相应的产品。有没有人遇到过类似的问题,或者有什么潜在的优雅解决方案?
控制器的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,但是比较困难