2016-11-29 127 views
0

我想我的種子的評論數據庫,但沒有工作,我不太清楚如何做到這一點播種數據庫

#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 

我的錯誤米越來越

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

Comments.model

belongs_to :user 
belongs_to :project 

路由

resources :projects do 
resources :comments 
end 

而且DB徵求意見

ID /體/ USER_ID/PROJECT_ID

任何想法?謝謝:)

----解決方案! ----

由於加斯頓

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

where是@user?錯誤是在這一行我認爲projects.each {| project | project.comments.create!(body:content,user_id:@ user.id)} – Gaston

+0

是的,我還沒有指定@user我該怎麼做?因爲我也會播種用戶。 – Eltorero1992

回答

0

我認爲這會工作

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 

這裏是一個另類

例如,如果你總想只有60%的項目

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 

最後,給種子用戶

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

非常感謝你的回答,但你幾乎是對的。我稍微調整了一下,最終設法得到它,但是這是一個團隊的努力,所以我會給你的答案一樣好,gj! 請參閱編輯1的分辨率 – Eltorero1992