2017-11-10 5 views
1

Ich möchte meine Entwicklungsdatenbank in genau der gleichen Weise säen, wie ich meine Testdatenbank seed. Ich habe ein PersonalTitle Modell, das ein Attribut hat, title. Die title hat Werte wie Mr, Mrs, Miss, Ms und Dr. Es gibt mehrere andere Modelle, die belong_toPersonalTitle. Zum BeispielWie setze ich meine Entwicklungsdatenbank mit Schienen test Fixtures

class Administrator < ActiveRecord::Base 
    belongs_to :personal_title 
end 

class Worker < ActiveRecord::Base 
    belongs_to :personal_title 
end 

class Client < ActiveRecord::Base 
    belongs_to :personal_title 
end 

... und so weiter

In personal_titles.yml, dass der Test-Datenbank Samen, ich habe

personal_title_mr: 
    title: Mr 
personal_title_mrs: 
    title: Mrs 
personal_title_ms: 
    title: Ms 
personal_title_miss: 
    title: Miss 
personal_title_dr: 
    title: Dr 

und dann, wenn ich einen persönlichen Titel in administrators.yml verwenden möchten Ich habe

administrator_john_smith: 
    personal_title: personal_title_mr 

So kann ich benannte Referenzen verwenden, um die a zu füllen dministrators Tabelle mit der personal_title_id. Ich kann das nicht tun, wenn ich meine Entwicklungsdatenbank anfange. Von dem, was ich auf Stack-Überlauf gefunden, für die Entwicklung, hat personal_titles.yml so aussehen,

- title: Mr 
- title: Mrs 
- title: Ms 
- title: Miss 
- title: Dr 

So ist die persönlichen Titel nicht in einer Datei mit dem Namen yml werden können, die eine Entwicklungsdatenbank zum Auffüllen verwendet wird. Warum nicht? Rails weiß, wie Namensreferenzen verwendet werden, da dies beim Setzen der Testdatenbank geschieht.

Ich bin mit Rails 4.10 und Ruby 1.9.3

aktualisieren

ich meine Entwicklungsdatenbank mit db\seeds\seed_all.rb Aussaat. Innerhalb dieser Datei habe ich

seed_file = Rails.root.join('db', 'seeds', 'personal_titles.yml') 
personal_titles = YAML::load_file(seed_file) 
PersonalTitle.create!(personal_titles) 

ich über faker kennen und ich habe eine Seed-Datei für sie. Im obigen Fall möchte ich bekannte Daten, die ich verstehe, die sich nicht ändern und wo ich volle Kontrolle über die Assoziationen habe.

+0

Ich bekomme Ihr Problem nicht vollständig, weil Sie mit Samenkapseln und Fixtures wie das selbe interagieren (während ich über verschiedene Dinge nachdenke), aber die Umgebung beeinflusst normalerweise niemals Prozesse, um es so anders zu machen. Hat meine Antwort mit einigen gemeinsamen Ideen verlassen – AntonTkachov

+0

Haben Sie 'rake db: fixtures: load' versucht? – MrYoshiji

+0

Nein, ich habe @MrYoshiji nicht, aber ich habe es gerade getan und genau das wollte ich. Wenn Sie eine formelle Antwort hinzufügen, werde ich sie als korrekt markieren – RamJet

Antwort

1

Sie die Last Ihrer Armaturen in Ihrer Datenbank auslösen können mithilfe des folgenden Rake-Befehl:

rake db:fixtures:load 

Standardmäßig werden die Schienen env entwickelt, sodass die Fixtures in die Datenbank dieser Umgebung geladen werden.

0

Um Ihre Datenbank zu säen, würde ich mit db/seeds.rb gehen, die nur üblichen Ruby-Code akzeptieren. In Tests Datenbank wird in der Regel mit fixtures (ich denke, Sie verwenden diese Methode) oder mit factory_girl, aber ich habe nicht konfrontiert ähnliche Fälle von Seeding Dev in der gleichen Weise.

Falls Sie eine komplizierte und lange Seed-Datei haben, schauen Sie sich einige Edelsteine ​​für die Seed-Datenbank an. Ich benutzte seedbank in einem meiner jüngsten Projekt Samen in separate Dateien wie seeds/users.seeds.rb aufzuspalten, seeds/categories.seeds.rb, etc

Verwandte Themen