Фабрика-бот - Как построить ассоциацию и вложенные атрибуты - PullRequest
0 голосов
/ 11 февраля 2019

Я новичок в Фабриках, и мне нужна помощь для связи и вложенных атрибутов ....

  • Как мне установить пользователя-администратора, который создает продукт?OK
  • Как установить категорию для продукта?Хорошо
  • Как мне прикрепить изображения к продукту?OK

  • Как установить размеры продукта (вложенные атрибуты)

user.rb

 has_many :products

product.rb

belongs_to :user
belongs_to :category
has_many :sizes, inverse_of: :product, dependent: :destroy #nested_attributes 

size.rb

belongs_to :product

category.rb

has_many :products

фабрики / пользователи.rb

  FactoryBot.define do
    factory :user do 
        first_name        { Faker::Name.first_name}
        last_name         { Faker::Name.last_name }
        admin             { [false, true].sample }
        sequence(:email)  { |n| "#{n}#{Faker::Internet.email}" }
        birth_date        {"20/10/1997"}
        password          { 'password'}
    end 
  end

фабрики / категории.rb

FactoryBot.define do
  factory :category do
    title { Faker::Artist.name }
  end
end

фабрики / размеры.rb

FactoryBot.define do 
    factory :size do 
        size_name {["S", "M", "L", "XL"].sample }
        quantity  { Faker::Number.number(2) }
    end
end

фабрики / продукты.rb

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) }
    size
    category
    # how to set an admin ?? 
  end
end

1 Ответ

0 голосов
/ 11 февраля 2019

Добавьте ассоциации, подобные этой

Для продукта

FactoryBot.define do 
    factory :product do
      user {User.first || association(:user)}
      user {User.first || association(:user, admin: true)}
      # your admin attribute (role: admin or admin: true) whatever you are using for admin
      category {Category.first || association(:category)}
    end
end

Прочитайте Ассоциация FactoryBot надеюсь, что это поможет.

...