34

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

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

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

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

class: 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 に答える