2015-05-02 8 views
5

Я хотел бы знать, существует ли способ Rails для создания нескольких записей, передавая в массив атрибутов.ActiveRecord create: передать массив атрибутов

Например, вместо

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) 

Я хотел бы сделать что-то вроде:

MyModel.create!(attr_1: some_attr, attr_2: [1,2,3,4]) 

Но это не работает. Есть ли аналогичный способ достижения этого без цикла?

ответ

12

Согласно документации вы можете create записи из массива хэшей:

Атрибуты параметр может быть либо быть Hash или массив хэшей. Эти хэши описывают атрибуты объектов, которые создаются .

MyModel.create([{attr_1: some_attr, attr_2: 4}, {attr_1: some_attr, attr_2: 5}]) 
+1

Есть версия этого, что не сохраняет в базе данных? например 'Build'? – fatuhoku

+0

@fatuhoku нет такой версии, которая не сохраняет. –

+2

Примечание: это НЕ создает один запрос для тех, кто пытается создать эффективный запрос вставки. –

Смежные вопросы