如何为种子分配User_ID

时间:2015-01-06 18:04:15

标签: ruby-on-rails ruby

我试图将随机user_id分配给从种子数据库生成的产品。除了渲染为零的user_id之外,我想要的一切都在为我生成。我试图更好地理解belongs_to交互如何工作 - 这里的任何帮助都会很棒!

10.times do |n|
 name = Faker::Name.name
 job = Faker::Company.name
 User.create!(name: name,
               job: job  )
end

10.times do |n|
 users = User.all
 name = "Turkey"
 price = Random.rand(42-10) + 10
 user_id = users[1..10] 
 Product.create!(name: name,
                 price: price,  
                 user_id: user_id)
end             

提前感谢您的帮助!

编辑**感谢大家的帮助。这就是我最终将代码更改为。

users = User.order(:created_at).take(6)
10.times do |n|
name = "Turkey"
price = Random.rand(42-10) + 10
users.each { |user| user.products.create!(name: name, price: price)}
end               

4 个答案:

答案 0 :(得分:0)

你可能是这个意思:

user_id = users.last.id

或者可能:

user_id = users.shuffle.last.id

我不确定你的范围符号1..10是什么意思。数组是0索引的。

答案 1 :(得分:0)

将按顺序自动为每个新用户生成用户ID。没有必要拥有" user_id"在那里。

答案 2 :(得分:0)

与Mukul215一样,ID将按顺序自动生成。在种子中硬编码ID是不好的做法。

答案 3 :(得分:0)

我不是100%在为产品分配随机用户ID方面提出的问题。根据您对@tadman的评论,您似乎只想要一个产品属于每个用户。为什么不做这样的事情:

10.times do |n|
 name = Faker::Name.name
 job = Faker::Company.name
 User.create!(name: name, job: job)
end

User.all.each do |user|
 name = "Turkey"
 price = Random.rand(42-10) + 10
 user.products.create!(name: name, price: price)
end     

假设您的用户模型包含许多产品,并且某个产品属于用户,应该可以获得所需的结果。

发送user.productsuser.id

时,

user_id会自动将product build字段分配到create记录