1
FactoryGirl.define do 

factory :agency do 
    name "Example Inc" 
    available_items "20" 
    recruiter  # recruiter.id 
end 

factory :recruiter do 
    email '[email protected]' 
    password 'please' 
    password_confirmation 'please' 
    # required if the Devise Confirmable module is used 
    # confirmed_at Time.now 
end 

end 

agency.rbFactory_girl簡単関連

class Agency < ActiveRecord::Base 
    belongs_to :recruiter 
    validates :name, :presence => true 
end 

recruiter.rb

class Recruiter < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
    :recoverable, :rememberable, :trackable, :validatable 

    # Setup accessible (or protected) attributes for your model 
    attr_accessible :email, :password, :password_confirmation, :remember_me 
    attr_accessible :agency_attributes, :first_name 

    has_one :agency, :dependent => :destroy 

    accepts_nested_attributes_for :agency 
    validates :email, :presence => true 
end 

authentication_steps.rb

def create_user 
    @recruiter = FactoryGirl.create(:recruiter) 
end 

このRecruiterを複製するには& factory_girlを使用する代理店の関連付けはありますか?

+0

代理人が「belongs_to:recruiter」の場合は、代理店ごとに1つのリクルートのみができ、代理店テーブルにはrecruiter_idがあります。それはあなたが欲しいものですか?私は代理店 'has_many:recruiters'と募集者' belongs_to:agency'を見たいと思っています。 –

答えて

4

は、それが役に立つことを願っています。がんばろう!

+0

代理店に募集人がいる場合、募集者IDを持っていることを意味します。匿名でないことが許されない限り、仲介業者のファクトリは募集者オブジェクトを作成する必要があります。 – MrDanA

+0

ok私は理解していますが、agency.recuiter_idのバリデータはありません。工場で偽のrecuiter_idを設定することで、代理店工場を隔離することができます。しかし、私は良い練習であるかどうかはわかりません。 – Suborx

1

私はFG自体ではなく、テストケースでそれを複製する必要があると思います。

before (:each) do 
    @recruiter = FactoryGirl.create(:recruiter) 
    @agency = FactoryGirl.create(:agency) 
    @agency.recruiter = @recruiter 
end 

このようなものです。私はあなたがこれを両側から

create(:agency).recuiter => nil 
create(:agency_with_recuiter).recuiter => recuiter 

create(:recuiter).agency => nil 
create(:recuiter_with_agency).agency => agency 

を動作するはず機関の工場からのリクルーターを削除し、工場

FactoryGirl.define do 

    factory :agency do 
    name "Example Inc" 
    available_items "20" 

    factory :agency_without_recuiter do 
     recuiter_id = 1 
    end 

    factory :agency_with_recuiter do 
     recuiter 
    end 
    end 

    factory :recuiter do 
    email '[email protected]' 
    password 'please' 
    password_confirmation 'please' 

    factory :recuiter_with_agency 
     agency 
    end 
    end 

end 

をrequiterする機関を追加すべきだと思う

関連する問題