如何使用继承用户模型定义工厂

时间:2012-11-12 12:40:23

标签: ruby-on-rails ruby-on-rails-3 factory-bot

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

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

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

2 个答案:

答案 0 :(得分:52)

你可以试试这个:

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

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

更多信息:Inheritance

答案 1 :(得分:11)

只需将类: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