【发布时间】:2026-01-09 07:00:01
【问题描述】:
我正在尝试创建一个类似 API 的小型电子商务。我正在尝试使用 Faker 创建模拟用户,并在种子期间创建一个购物车实例,并将其作为外键附加(每个用户都应该有一个购物车)。我尝试了两种不同的方法
这些文件在 db 文件夹中的 seed.rb 文件中 尝试1: 5.次做 产品.create({ 标题:Faker::Commerce.product_name, 价格:Faker::Commerce.price, inventory_count: Faker::Number.number(2) })
end
3.times do
ShoppingCart.create({
total_price: 0
}) do |t|
User.create({
name: Faker::Name.name,
shopping_carts_id: t.id
})
end
end
尝试2:(产品的相同创建)
3.times 做 购物车 = ShoppingCart.create({ 总价格:0 })
User.create({
name: Faker::Name.name,
shopping_carts_id: cart.id
})
end
end
这是模型
class ShoppingCart < ApplicationRecord
belongs_to :users
has_many :products
end
当我运行种子时,用户创建良好,但没有购物车。用户应该有一个外键到它的购物车。我对 Rails 很陌生,很难理解数据库关系。
【问题讨论】:
-
请记住,对于 Ruby,
{ ... }大括号对于仅哈希参数列表是可选的。就像User.create({ name: '...' })可以代替User.create(name: '...')一样简洁得多。这也可能解决这里的一些真正不稳定的缩进。 -
尝试调用create!在两者上,看看是否引发错误
标签: mysql ruby-on-rails ruby