how to define factories with a inheritance user model

bulleric picture bulleric · Nov 12, 2012 · Viewed 10.4k times · Source

I got following problem: In my application i use inheritance to define my user model:

class User
 include Mongoid::Document

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


class CustomUser < User
 field :customuserfield...
end

How can i write factories to map this Class hirachie in my specs. And keep up writing with don´t repeat yourself.

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

    factory :custom_user do
      customfield "customfield"
    end
  end
end

This doesn´t work for me because the class is also "User". With "User" i got a invalid error because the customfields are not defiend here. Is there a good practice, way or method to relize something like that.

Answer

Thanh picture Thanh · Nov 12, 2012

You can try this:

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

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

For more info: Inheritance.