0

Sorry wenn das schon gefragt wurde, aber ich kann keine Fragen ähnlich finden.Verschachtelte Ressourcen create_checklist für alle Benutzer in der Kommandozeile auf has_one association

Mit Schienen 5.

Ich habe eine doppelt verschachtelte Ressource

resources :users do 
    resources :checklists do 
     resources :checklist_items do 
      member do 
       patch :completed 
      end 
     end 
    end 
end 

Und ich habe

user.rb

user has_one :checklist 

checklist.rb

checklist belongs_to :user 

Und ich weiß, wie man eine neue Checkliste für einen Benutzer in der Kommandozeile erstellen:

User.checklist.create 

Jetzt möchte ich für alle vorhandenen Benutzer in der Datenbank über die Kommandozeile eine neue Checkliste erstellen. So wie dieser imaginäre Befehl:

User.all.checklist_create 

so dass jeder Benutzer eine Checkliste bekommt. Wie erreiche ich das?

Antwort

1

Das funktionierte für mich, aber vielleicht gibt es einen kürzeren Weg, um es zu erreichen?

User.all.each do |user| 
user.create_checklist 
end 
+0

User.all.each {| u | u.create_checklist} – dthal

0

Rails und Ruby sind mit vielen metaprogramming gefüllt und ich werde nicht überrascht sein, wenn ein Verfahren wie das, was Sie eigentlich darauf hindeutet, existiert. Aus der Sicht des Designs denke ich jedoch, dass dies ein Overkill wäre. Stellen Sie sich vor, Sie hätten 10K + Benutzer und möchten mit diesem einzigen Befehl Tickets für alle 10k-Benutzer erstellen? Wie wäre es mit ihren Feldern für jedes Ticket. Also, um Ihr Problem hier zu lösen, sind einige Optionen, die Sie betrachten können, um es auf Ihre Weise zu haben.

Factory Girl

Mit Fabrik Mädchen, haben Sie Methoden wie create_list, build list, überprüfen Sie ihre Dokumentation für mehr heraus. Von ihren Namen scheinen sie intuitiv genug. Mit diesen Methoden können Sie eine Liste mit mehreren Objekten erstellen. Je nachdem, wie Sie Ihre Fabriken strukturieren, können Sie in nur einer Zeile das gewünschte Ergebnis erzielen.

Seed.rb

Rails bietet eine seed.rb Datei, in der Sie Ruby-Skript hinzufügen können, die für die Aussaat Ihre Datenbank mit einigen Standardwert sein sollte. Standardmäßig haben Sie ein Beispielskript in der Datei seed.rb, das Sie als Referenz für die Einrichtung der gewünschten Struktur verwenden können.

Allerdings möchten Sie nur diese Option verwenden, wenn Sie nur Test-/Dummy-Daten verwenden möchten, kann Ihr Anwendungsfall anders aussehen. Wenn Sie diese Daten jedoch nur zum Testen benötigen, empfehle ich Ihnen, einen TDD-Ansatz zu verfolgen. Hoffe das hilft dir.

Verwandte Themen