34

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

class User
 include Mongoid::Document

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


class CustomUser < User
 field :customuserfield...
end

我如何编写工厂来在我的规范中映射这个 Class hirachie。并继续写作,不要重复自己。

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

    factory :custom_user do
      customfield "customfield"
    end
  end
end

这对我不起作用,因为该类也是“用户”。使用“用户”我得到一个无效错误,因为这里没有定义自定义字段。是否有一个好的做法,方法或方法来实现类似的东西。

4

2 回答 2

64

你可以试试这个:

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

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

欲了解更多信息:继承

于 2012-11-12T13:22:34.843 回答
14

只需将类:CustomUser 添加到 :custom_user 工厂。这对我行得通。当您嵌套在 :user 中时,这意味着父级是用户,但它更简单。

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

    factory :custom_user, class: CustomUser do
      customfield "customfield"
    end
  end
end
于 2014-05-23T12:17:33.323 回答