我有两个模型。一种是类别,另一种是产品。我已经填充了类别表,现在我需要用类别ID填充产品之一。 我正在为这个人群使用假货。
模型和seed.rb文件是这样的
class Product < ApplicationRecord
belongs_to :categories
end
class Category < ApplicationRecord
has_many :products
end
seeds.rb
category = Category.ids
100.times do
Product.create!([{
name_product: Faker::Commerce.product_name
},
{
value_product: Faker::Commerce.price
},
{
category_id: category.sample
}
])
end
但是即使传递类别ID,我仍然收到错误消息“验证失败。类别是必需的”。 如果我在产品模型中评论该关联,则可以,但这不是解决方案。
答案 0 :(得分:1)
我认为您的问题在于您如何尝试创建产品。
当您传递哈希数组时,您当前的代码将尝试创建三个产品-其中两个没有类别ID:
Product.create!([
{
name_product: Faker::Commerce.product_name # << first product, no category
},
{
value_product: Faker::Commerce.price # << second product, no category
},
{
category_id: category.sample # << third product
}
])
您的问题尚不清楚,但请在100.times do
块中尝试以下方法之一:
Product.create!(
name_product: Faker::Commerce.product_name,
value_product: Faker::Commerce.price,
category_id: category.sample
)
或者:
Product.create!([
{
name_product: Faker::Commerce.product_name,
category_id: category.sample
},
{
value_product: Faker::Commerce.price,
category_id: category.sample
},
{
category_id: category.sample
}
])
如果每个实例具有name_product
,value_product
和category_id
列,则前者将创建一条记录;后三个产品都具有category_id
。
让我知道您的生活如何,如果有帮助的话。
编辑
好像您的关联设置不正确。试试:
class Product < ApplicationRecord
belongs_to :category
end
答案 1 :(得分:-1)
希望它会起作用...
category = Category.ids
100.times do
Product.create!(name_product: Faker::Commerce.product_name, value_product: Faker::Commerce.price, category_id: category.sample)
end