2017-02-23 1 views
0

Ich versuche, eine Datenbank mit 4 Benutzern zu seed. Jeder Benutzer hat has_one Profil und has_many todo_lists. User-Modell:Seeding Datenbank Schienen gehören zu

class User < ActiveRecord::Base 
    has_one :profile, dependent: :destroy 
    has_many :todo_lists, dependent: :destroy 
    has_many :todo_items, through: :todo_lists, source: :todo_items 
end 

Hier ist meine Seed-Datei

User.destroy_all 

user_list = [ 
    ["Carly", "Fiorina", "female", 1954], 
    ["Donald", "Trump", "male", 1946], 
    ["Ben", "Carson", "male", 1951], 
    ["Hillary", "Clinton", "female", 1947] 
] 

user_list.each do |fname, lname, gender, byear| 
    { 
     User.create!(username: lname, password_digest: "xyz") 
     User.profile.create! (first_name: fname, last_name: lname, gender: gender, birth_year: byear) 
     User.todo_list.create!(list_name: "temp", list_due_date: 1.year.from_now); 
    } 
end 

Ich erhalte die Fehler unerwartete TLabel zu Benutzername Hinweis: lname. Meine Migration zum Erstellen der Benutzertabelle ist:

Antwort

1

Sie sollten keine Klammern in einem Do-End-Block verwenden. Versuchen Sie dies:

user_list.each do |fname, lname, gender, byear| 
    user = User.create!(username: lname, password_digest: "xyz") 
    user.create_profile!(first_name: fname, last_name: lname, gender: gender, birth_year: byear) 
    user.todo_lists.create!(list_name: "temp", list_due_date: 1.year.from_now); 
end 
+0

Ja, das ist wahr, danke für den Fang. Ich denke das Problem kann sein, dass ich kein Profil durch einen Benutzer erstellen kann. Vielleicht muss ich ein Profil erstellen und es dann einem Benutzer zuweisen? – leenyburger

+0

Sie müssen das Profil und todo_lists der Benutzerinstanz und nicht der Benutzerklasse erstellen. Ich habe meine Antwort aktualisiert, um dies zu berücksichtigen. Denken Sie daran, dass Ihre Profile- und TodoList-Modelle über einen Fremdschlüssel verfügen müssen, der sie mit dem Benutzer verbindet. – eiko

+0

Jetzt bekomme ich eine NoMethodError undefined Methode create! – leenyburger