Я полагаю, что лучше создать новый вопрос ... Отсюда мой предыдущий вопрос У моего модельного продукта много размеров (вложенные атрибуты)
Я хочу создать фабрики, но я могуне заставить его работать ...
Продукт действителен, если он имеет хотя бы один размер (size_name
и quantity
)
FactoryBot.define do
factory :product do
title { Faker::Artist.name}
ref { Faker::Number.number(10)}
price { Faker::Number.number(2) }
color { Faker::Color.color_name }
brand { Faker::TvShows::BreakingBad }
description { Faker::Lorem.sentence(3) }
attachments { [
File.open(File.join(Rails.root,"app/assets/images/seeds/image.jpg")),
] }
user { User.first || association(:user, admin: true)}
category { Category.first }
# SOLUTION 1
factory :size do
transient do
size_name {["S", "M", "L", "XL"].sample}
quantity { Faker::Number.number(2) }
end
end
# SOLUTION 2
after(:create) do |product|
create(:size, product: product)
end
# SOLUTION 3
initialize_with { attributes }
# Failure/Error: @product = create(:product, category_id: category.id)
# NoMethodError:
# undefined method `save!' for #<Hash:0x007ff12f0d9378>
end
end
В спецификации контроллера
before(:each) do
sign_in FactoryBot.create(:user, admin: true)
category = create(:category)
@product = create(:product, category_id: category.id)
end
Я не знаю, как написать атрибут размера, мой продукт все еще недействителен (отсутствует размер)
Я получаю ошибку validation failed,Product must exist...