如何将 User_ID 分配给种子

How do I assign a User_ID to the seed

我正在尝试将随机 user_id 分配给从种子数据库生成的产品。除了呈现 nil 的 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               

你可能是这个意思:

user_id = users.last.id

或者可能:

user_id = users.shuffle.last.id

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

用户 ID 将按顺序自动为每个新用户生成。那里不需要 "user_id" 字段。

就像Mukul215说的那样,ID会按顺序自动生成。在种子中硬编码 ID 是错误的做法。

在为产品分配随机用户 ID 方面,我不是 100% 了解您的要求。从您对@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.products会在发送buildcreate[=时自动将user.id分配给user_id字段到product记录17=]