Sun*_*Cho 8 activerecord ruby-on-rails
我想知道是否有一种Rails方法通过传入一组属性来创建多个记录.
例如,而不是
MyModel.create!(attr_1: some_attr, attr_2: 1)
MyModel.create!(attr_1: some_attr, attr_2: 2)
MyModel.create!(attr_1: some_attr, attr_2: 3)
MyModel.create!(attr_1: some_attr, attr_2: 4)
Run Code Online (Sandbox Code Playgroud)
我想做的事情如下:
MyModel.create!(attr_1: some_attr, attr_2: [1,2,3,4])
Run Code Online (Sandbox Code Playgroud)
但它不起作用.有没有类似的方法来实现这一点没有循环?
Зел*_*ный 18
根据文档,您可以create从一组哈希中记录:
attributes参数可以是Hash或Hashes数组.这些哈希描述了要创建的对象的属性.
MyModel.create([{attr_1: some_attr, attr_2: 4}, {attr_1: some_attr, attr_2: 5}])
Run Code Online (Sandbox Code Playgroud)
在提出这个问题时,ActiveRecord 没有任何内置功能可以一次有效地插入多条记录。截至今天,Rails 6 是当前的稳定版本,它附带Model#insert_all!了一种批量插入的方法。
你可以在这里找到它的文档https://edgeapi.rubyonrails.org/classes/ActiveRecord/Persistence/ClassMethods.html#method-i-insert_all-21
值得一提的是,Rails 6 还实现Model#upsert_all!了在记录存在的情况下高效插入或更新的功能。
| 归档时间: |
|
| 查看次数: |
7957 次 |
| 最近记录: |