我正在尝试将一对父/子模型的bulk insert
添加到MySQL数据库表中,但似乎我无法使用标准的ActiveRecord功能来实现它。
所以,我尝试了activerecord-import gem,但它不支持MySQL的递归插入......
# Book has_many authors / Author belongs to Book
books = []
10000.times do |i|
book = Book.new(:name => "book #{i}")
book.author.build(:name => "author #{i}")
books << book
end
Book.import books, recursive: true # THIS DOES NOT WORK
我也尝试使用原始SQL实现它,但是我无法找到保留每个父/子的引用的方法,因为在我想插入子数据的时候,它的父节点没有它的id然而,
任何人都知道如何解决这个问题?
答案 0 :(得分:0)
请尝试这样:
books = []
10000.times do |i|
book.name = "book #{i}")
books << book
end
Book.import books // Here it creates Books
我不确定如何继续创作作者...
答案 1 :(得分:0)
你必须使用嵌套属性
预订模型中的
accepts_nested_attributes_for :author
比你可以用下一个方式做到的
books = []
10_000.times do |i|
books << { name: "book #{i}", author_attributes: { name: "author_#{i}" }
end
Book.create(books) # it will create all object in single transaction