2016-11-29 1 views
0

Ich versuche, meine Datenbank Kommentare zu impfen, aber funktioniert nicht, wie ich bin nicht ganz sicher, wie es zu tunSeeding Datenbank für Kommentare mit zwei Abhängigkeiten Projekte und Benutzer

#Comments Creation 
users = User.order(:created_at).take (6) 
projects = Project.order(:created_at).take(6) 
50.times do 
content = Faker::Lorem.sentence(5) 
projects.each { |project| project.comments.create!(body: content , user_id: @user.id) } 
end 

Der Fehler I‘ m bekommen

rails db:seed 
rails aborted! 
NoMethodError: undefined method `id' for nil:NilClass 

Comments.model

belongs_to :user 
belongs_to :project 

Routen

resources :projects do 
resources :comments 
end 

db Auch für Kommentare

id/Körper/user_id/project_id

Irgendwelche Ideen? Danke :)

---- Lösung! ----

Dank Gaston

users = User.order(:created_at).take (6) 
projects = Project.order(:created_at).take(6) 
50.times do 
    users.each do |user| 
     content = Faker::Lorem.sentence(5) 
     projects.each { |project| project.comments.create!(body: content, user_id: user.id) } 
    end 
end 
+0

wo ist @user? der Fehler ist in dieser Zeile denke ich projects.each {| project | project.comments.create! (body: content, user_id: @ user.id)} – Gaston

+0

ja, ich habe nicht @user angegeben, wie kann ich das tun? wie ich die Benutzer auch säen werde. – Eltorero1992

Antwort

0

ich denke, das ist Arbeit wird

users = User.order(:created_at).take (6) 
projects = Project.order(:created_at).take(6) 
50.times do 
    users.each do |@user| 
     content = Faker::Lorem.sentence(5) 
     projects.each { |project| project.comments.create!(body: content , user_id: @user.id) } 
    end 
end 

hier eine alternative

wenn Sie zum Beispiel nur 60 insgesamt pro Projekt wollte

users = User.order(:created_at).take (6) 
projects = Project.order(:created_at).take(6) 

projects.each do |project| 
    10.times do 
     users.each do |@user| 
      content = Faker::Lorem.sentence(5) 
      project.comments.create!(body: content , user_id: @user.id) } 
     end 
    end 
end 

schließlich, um Benutzer zu seeden

6.times do |n| 
    name = Faker::Name.name 
    email = "sasexample-#{n+1}@example.org" 
    User.create!( 
       name: name, 
       email: email, 
       password: "exampleexample") 
    end 
+0

Vielen Dank für Ihre Antwort, aber Sie haben es fast richtig gemacht. Ich habe es ein wenig optimiert und es endlich geschafft, es zu bekommen, aber es war eine Teamleistung, also werde ich deine Antwort so gut machen, gj! Siehe die Bearbeitung 1 für die Auflösung – Eltorero1992

Verwandte Themen