Rails种子在db:seed

时间:2019-01-14 21:37:42

标签: mysql ruby-on-rails ruby

我正在尝试创建一个像API这样的小型电子商务。我正在尝试使用Faker创建模拟用户,并创建一个在种子期间作为外键附加到它的购物车的实例(每个用户都应该有一个购物车)。我尝试了两种不同的方法

这些文件位于db文件夹的seed.rb文件中 尝试1:     5次       Product.create({                          标题:Faker :: Commerce.product_name,                          价格:Faker :: Commerce.price,                          stock_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次       购物车= 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还是很陌生,很难理解数据库关系。

1 个答案:

答案 0 :(得分:0)

您是否尝试过通过迁移添加外键并查看结果是什么?

rails g migration AddForeignKeyToShoppingCart

然后在新的迁移文件中,添加以下内容:

def change
  add_foreign_key :shopping_carts, :users
end