2016-11-29 155 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