Rails Active Record - Save multiple objects at once
我看了一个问题,但没有找到对我有用的答案。
例如,我有一个具有多个任务的Project模型。我想根据一系列属性为某个项目创建许多任务。因此,在我的项目模型中,我将有一个这样的方法(简化的示例):
1 2 3 | def create_tasks(tasks) tasks.map{|t| Task.create(project: self, name: t.name)} end |
问题是,对于每个任务,它都会对我的数据库造成影响,并且对于大量记录而言这是不希望的。我该怎么做,以便ActiveRecord仅对我的数据库进行一次调用?
在此先感谢!
每次插入数据库的调用将分别完成(在不同事务中)。但是您可以减少将所有创建物package在一个事务中的总延迟。
1 2 3 | Task.transaction do tasks.each{ |task| Task.create(...) } end |
在这种情况下,所有创建的内容都将package在一个原子数据库事务中。
看看
也可以尝试
Nested attributes allow you to save attributes on associated records through the parent.
希望有帮助。