Подтвердить что ты не робот

Как определить фабрики с моделью наследования

У меня возникла следующая проблема: В моем приложении я использую наследование для определения моей модели пользователя:

class User
 include Mongoid::Document

 field :name...
 field :bla...
end


class CustomUser < User
 field :customuserfield...
end

Как я могу писать фабрики для сопоставления этого класса hirachie в моих спецификациях. И продолжайте писать, не повторяя себя.

FactoryGirl.define do 
  factory :user do
    name  "name"
    bla "bla"

    factory :custom_user do
      customfield "customfield"
    end
  end
end

Это не работает для меня, потому что класс также "Пользователь". С "User" я получил неверную ошибку, потому что пользовательские поля здесь не определены. Есть ли хорошая практика, способ или метод, чтобы сделать что-то подобное.

4b9b3361

Ответ 1

Вы можете попробовать следующее:

factory :user do
  name  "name"
  bla "bla"
end

factory :custom_user, class: CustomUser, parent: :user do
  customfield "customfield"
end

Для получения дополнительной информации: Inheritance.

Ответ 2

Просто добавьте класс: CustomUser в: custom_user factory. Это подходит для меня. Когда вы вложены в: user, это означает, что parent является User, но это проще.

FactoryGirl.define do 
  factory :user do
    name  "name"
    bla "bla"

    factory :custom_user, class: CustomUser do
      customfield "customfield"
    end
  end
end