2015-05-02 4 views
5

Chciałbym wiedzieć, czy istnieje sposób Rails do tworzenia wielu rekordów, przekazując w tablicy atrybutów.ActiveRecord create: przekazać tablicę atrybutów

Na przykład, zamiast

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) 

chciałbym zrobić coś takiego:

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

Ale to nie działa. Czy istnieje podobny sposób osiągnięcia tego bez pętli?

Odpowiedz

12

Według dokumentacji można create rekordy z tablicy skrótów:

atrybutów parametr może być albo Hash lub tablicę mieszań. Hasła te opisują atrybuty obiektów, które mają zostać utworzone.

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

Czy istnieje wersja tego, że nie zapisuje do bazy danych? na przykład 'build'? – fatuhoku

+0

@fatuhoku nie ma takiej wersji, która nie zapisuje. –

+2

Uwaga: NIE tworzy to pojedynczego zapytania dla tych, którzy próbują zbudować wydajne zapytanie wstawiania. –