如何使用inheritance用户模型定义工厂

我遇到了以下问题:在我的应用程序中,我使用inheritance来定义我的用户模型:

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 

这对我不起作用,因为该课程也是“用户”。 使用“用户”我得到了一个无效的错误,因为自定义字段在这里不是defiend。 是否有一种良好的做法,方法或方法来重新安排这样的事情。

你可以试试这个:

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

有关更多信息: inheritance 。

只需将类:CustomUser添加到:custom_user factory。 这对我行得通。 当您嵌套在:user时,它表示父级是User,但它更简单。

 FactoryGirl.define do factory :user do name "name" bla "bla" factory :custom_user, class: CustomUser do customfield "customfield" end end end