web-dev-qa-db-ja.com

継承ユーザーモデルを使用してファクトリを定義する方法

次の問題が発生しました:私のアプリケーションでは、継承を使用してユーザーモデルを定義しています:

class User
 include Mongoid::Document

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


class CustomUser < User
 field :customuserfield...
end

このクラスのヒエラルキーを仕様にマッピングするためのファクトリを作成するにはどうすればよいですか。そして、繰り返してはいけません。

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

    factory :custom_user do
      customfield "customfield"
    end
  end
end

クラスも「ユーザー」であるため、これは私には機能しません。 「ユーザー」では、カスタムフィールドがここで定義されていないため、無効なエラーが発生しました。そのようなものを緩和するための良い習慣、方法、または方法はありますか?.

30
bulleric

あなたはこれを試すことができます:

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

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

詳細情報: 継承

53
Thanh

クラス:CustomUserを:custom_userファクトリに追加するだけです。それは私にとってはうまくいきます。 :userにネストすると、親がUserであることを意味しますが、より単純です。

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

    factory :custom_user, class: CustomUser do
      customfield "customfield"
    end
  end
end
12
Jozsef NYITRAI