2016-09-01 3 views
1

Ich frage mich, ob es möglich ist, mehrere Objekte gleichzeitig in Ruby on Rails zu finden oder zu erstellen?Schienen first_or_create für mehrere Datensätze

etwas tun wie wie folgt (ich weiß, dass es für RoR nicht gültige Code ist aber nur fragen, ist es möglich, so etwas zu tun?)

class User 
end 

hash = [] 
hash << { name: 'Bob'} 
hash << { name: 'Jim'} 

User.where(hash).first_or_create! 

Die Bedeutung dieses zu minimise number of queries benötigt wird, etwas zu tun wie dieser

hash.map {|u| User.where(u).first_or_create!} 
+0

Was ist los mit 'hash.map {...}'? –

+0

Zu viele Abfragen an die DB. – Elmor

+0

@ Зелёный: Weil 'map' zu mehreren Abfragen führen würde und das OP versucht * die Anzahl der Abfragen zu minimieren * ... – spickermann

Antwort

2

Mai werden Sie dies versuchen:

Importparameteraddierroutine Juwel Ihre gemfile:

gem 'activerecord-import', '~> 0.10.0' 

Dann in Ihrem Controller:

create_user = [] 

create_user << {name: "Bob"} 
create_user << {name: "jim"} 

User.import create_user 

Dies ist nur mit einer einzigen Abfrage einfügen wird in Ihre Datenbank.

-1

Dies ist in Ruby möglich. Bitte überprüfen Sie den folgenden Code:

hash = [] 
hash << { name: 'Bob' } 
hash << { name: 'Jim' } 

User.create(hash) 

Zwei Benutzer werden basierend auf den Daten erstellt, die Sie im Hash hinzugefügt haben. Außerdem sollte der Schlüssel des Wörterbuchs auf den Spaltennamen basieren.

+0

Ich spreche über find oder create, nicht eine einfache erstellen! – Elmor

Verwandte Themen