2016-04-16 13 views
0

Ich möchte sowohl eine Option für einen Benutzer haben, um neue Daten über ihre Eingänge zu erstellen, aber ich möchte auch, dass es eine Option für sie gibt, klicken Sie auf "Random Destination" -Taste und es wird Faker Daten hinzufügen.Wie benutze ich Faker in meinem Rails Controller, um eine zufällige Datenmenge zu erstellen?

Jetzt erstellt dies eine neue Zeile in meiner Datenbank, aber es gibt die Daten nicht ein.

mit Postgres Db und ActiveRecord, für was es wert ist.

+0

Willst du damit sagen, dass die Daten der Fälscher nicht in der Datenbank gespeichert sind? – margo

+0

Ja, es scheint nicht wie durchgegangen, aber ich habe auch die Climates-Array und nichts ging hinein –

Antwort

0

Das könnte völlig falsch sein, aber mein Ansatz war früher, FactoryGirl in Kombination mit Faker zu verwenden, um dies zu erreichen. Es war nicht offensichtlich, ohne FactoryGirl zu verwenden. Es hat jedoch den fiesen Nebeneffekt des Ladens von FactoryGirl mit Ihren anderen Umgebungen mit meiner nicht ideal sein. Mein Ansatz war:

Stellen Sie sicher, Fälscher und factory_girl Edelsteine ​​sind in der Entwicklung/Produktion Gruppen enthalten

gem 'faker', '~> version' 
gem 'factory_girl', '~> version' 

Im factory initializer Sie die env die angeben müssen, in dem Sie es verwenden ermöglichen.

Dann in Ihrem Controller bauen/erstellen Sie Ihr Ziel.

fake_destination = FactoryGirl.build(:destination) 

die wird Benutzer Faker, so aus (Fabriken/destination.rb):

name { Faker::Name.last_name } 

und dann das entsprechende Attribut in Ihrer Objekterstellung verwenden.


Dies kann eine lange Lösung für ein viel einfacheres Problem sein!

1

Haben Sie nicht versucht, anstelle von Hash-Klammer normale Klammer mit ?, wie in:

destination = Destination.create ({name: Faker::Name.last_name + " Island", climate: climates.sample}) 

Vielleicht deshalb kein Attribut auf Datenbank gespeichert wurde, erwartet create ein Hash von Attributen, nicht einen Hash Hashes von Attributen.