2012-07-28 5 views
40

Wenn du das Juwel "factory_girl_rails" in dein Entwicklungsgerät einfügst und Blöcke in Gemfile eingibst, generiert rails automatisch Fabriken, wenn deine Modelle generiert werden.Kann FactoryGirl Fabriken generieren, nachdem Ihre Modelle erstellt wurden?

Gibt es eine Möglichkeit, Fabriken zu generieren, nachdem Ihre Modelle generiert wurden?


Eduardo Santana's ANSWER SHOULD BE CORRECT

+0

Was genau meinen Sie mit „Erzeugen“? Sie müssen sie explizit definieren und aufrufen. – iltempo

+0

@iltempo - Ich meine, wenn du den Edelstein "factory_girl_rails" verwendest, wenn du deine Modelle über den Befehl "rails g model User first_name: string" ... generierst, werden Factories für dieses Modell automatisch generiert, genau wie ein Fixture zum Prüfen. Ich habe mich gefragt, ob es einen Weg gibt, einen Generatorhaken zu benutzen, nachdem das Modell erstellt wurde. – GuiDoody

Antwort

18

Die --fixture-replacement Option Schienen sagen lassen, was für den Aufbau von Testdaten zu generieren. Sie können in Ihrer config/application.rb Datei diese als Standard festgelegt, etwa so:

config.generators do |g| 
    g.fixture_replacement :factory_girl 
end 
+0

Das macht den Trick! Es ist erstaunlich, was Sie finden, wenn Sie nur die Dokumentation durchlesen. :) – GuiDoody

+15

Wie beantwortet das die Frage? Wie generiert es Fabriken, nachdem die Modelle erstellt wurden? – Emil

+1

Siehe Antwort von user2040729 unten. –

121

Das erste, was, Blick auf die Source-Projekt, um herauszufinden, wie es umgesetzt wurde:

https://github.com/thoughtbot/factory_girl_rails/blob/master/lib/generators/factory_girl/model/model_generator.rb

Danach, zu erraten versuchen, wie es funktioniert:

rails g factory_girl:model Car name speed:integer 

Das Ergebnis ist:

create test/factories/cars.rb 

Und der Inhalt:

# Read about factories at https://github.com/thoughtbot/factory_girl 

FactoryGirl.define do 
    factory :car do 
    name "MyString" 
    speed 1 
    end 
end 

Denken Sie daran, wenn Sie Schienen g, können Sie rückgängig machen es immer, mit Schienen

rails d factory_girl:model Car name speed:integer 
+8

Dies sollte die richtige Antwort sein, da es die spezifische Frage zum Generieren von Factories für bereits erstellte Modelle beantwortet. Das übliche Szenario ist das Umschalten einer bestehenden Rails App mit Standard-Fixtures auf FactoryGirl –

+1

Sie müssen nicht einmal raten, wie es funktioniert, rails g factory_girl: model --help wird Ihnen sagen, wie. –

+0

Mein Modell heißt sogar 'Car'! Ja!!! –

2

d Dies ist keine Antwort, aber da ich nicht kommentieren kann noch: Ich denke, dass Sie damit einen Teil Ihres Problems lösen können. Sie können ein Juwel namens schema_to_scaffold verwenden, um eine Factory_girl: model-Befehlszeichenfolge zu generieren. Es gibt:

Schienen erzeugen factory_girl: Modell Benutzer fname: string lname: string bdate: Datum E-Mail: string verschluesseltes_passwort: string

von Ihrem schema.rb oder umbenannten schema.rb.

prüfen here oder here

0

Einige gute Antworten hier, aber eine andere Option ist stepford zu verwenden. Für einige Projekte, die Schemas mit Fremdschlüsseleinschränkungen verwenden, können die deep_ * -Methoden usw. hilfreich sein, und es ist eine einfache Möglichkeit, Fabriken über die Befehlszeile zu generieren.

Verwandte Themen