1
FactoryGirl.define do

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

factory :recruiter do
    email 'example@example.com'
    password 'please'
    password_confirmation 'please'
    # required if the Devise Confirmable module is used
    # confirmed_at Time.now
end

end

エージェンシー.rb

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

リクルーター.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

factory_girl を使用して、この Recruiter & Agency 関連付けを複製するにはどうすればよいですか?

4

2 に答える 2

4

代理店工場からリクルーターを削除し、リクイター工場に代理店を追加する必要があると思います

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 'example@example.com'
    password 'please'
    password_confirmation 'please'

    factory :recuiter_with_agency
      agency
    end
  end

end

これは両側から機能するはずです

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

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

それがお役に立てば幸いです。幸運を!

于 2012-04-24T17:27:28.480 に答える
1

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

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

このようなもの。

于 2012-04-24T17:25:53.437 に答える