我试图将随机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
答案 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.products
或user.id
时, user_id
会自动将product
build
字段分配到create
记录