2016-08-08 19 views
2

Ich habe ein paar Ecto Aufzeichnungen. Aber ich möchte sie duplizieren (sie sind 100 mal größer), um mit einer großen Menge von Platten zu spielen. Wie kann ich das über ecto Mechanismen tun?Wie du Datensätze für Ecto duplizierst?

+0

Sie möchten wahrscheinlich https://github.com/thoughtbot/ex_machina. – Dogbert

+0

Ich möchte nicht ex_machina außerhalb von 'test' env verwenden, danke: P – asiniy

+0

Dummy-Lösung: Schleife durch einen Bereich mit' Repo.insert', aber wahrscheinlich hast du schon darüber nachgedacht. – PatNowak

Antwort

4

Sie können dup replizieren, indem Sie einfach die ID-Schlüssel aus dem Datensatz zu entfernen:

for n <- (0..10), do: User |> Repo.get(record_id) |> Map.delete(:id) |> Repo.insert 

Obwohl das wird nicht funktionieren, wenn Sie eindeutige Schlüssel haben ... das würde verlassen Sie benötigen die Struktur selbst zu füllen:

Wenn Sie an diese zweite Antwort denken, würde ich Dogbert wiederholen und empfehlen, ex_machina in dev zu verwenden.

0

Nachdem ich die ID gelöscht hatte, stieß ich beim Einfügen auf ein Problem, weil ich meine Verknüpfungen nicht vorher geladen hatte. Ich sollte das nicht tun müssen, wenn ich nur die Platte dupliziere, also kam ich auf diese Methode. Dies setzt voraus, dass Sie die erforderlichen und optionalen Felder Ihres Schemas als Konstanten in Ihrem Modul definiert haben: